corse(函数专题)验证回文数的猜测

This commit is contained in:
James 2020-04-24 13:08:43 +08:00
parent 1663be60f3
commit c199712adc
7 changed files with 130 additions and 8 deletions

View File

@ -1,3 +1,35 @@
# 标题
# 『入门』(函数专题)验证回文数的猜测
* 内容
[问题描述]
教学案例,必须使用函数完成求解!
  左右对称的自然数称回文数。如121422413731等有人猜测从任意一个两位或两位以上的自然数开始将该数与它的逆序数如1992的逆序数是2991相加得到一个新数再用这个新数与它的逆序数相加不断重复上述操作经过若干步的逆序相加之后总可以得到一个回文数例如从1992开始
1992+2991=4983
4983+3894=8877
8877+7788=16665
16665+56661=73326
73326+62337=135663
135663+366531=502194
502194+491205=993399。
  经过七步就得到了回文数。
  设计一个程序由计算机在局部范围内验证回文数的猜测并将寻找回文数的每一个步骤都显示出来。10步内不能得到则直接输出"NO"
[输入格式]
  一个整数( 小于 10^5 )。
[输出格式]
  10步内得到回文数则输出得到的步数否则输出“NO”。
[输入样例]
1992
[输出样例]
1992+2991=4983
4983+3894=8877
8877+7788=16665
16665+56661=73326
73326+62337=135663
135663+366531=502194
502194+491205=993399

View File

@ -1,7 +1,72 @@
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
int pan = 0, ans[11][10] = { 0 }, ce[11] = { 0 };
void doit(int n[], int big)
{
pan++;
ce[pan] = big;
if (pan == 11) {
cout << "NO";
return;
}
for (int i = 0; i < ce[pan]; i++) {
ans[pan][i] += n[i] + n[ce[pan] - i - 1];
ans[pan][i + 1] = ans[pan][i] / 10;
ans[pan][i] %= 10;
}
if (ans[pan][ce[pan]] != 0) {
ce[pan]++;
}
/*
for(int i=0;i<ce[pan];i++){
cout<<n[i];
}
cout<<"+";
for(int i=ce[pan]-1;i>=0;i--){
cout<<n[i];
}
if(ans[pan][ce[pan]]!=0){
ce[pan]++;
}
cout<<"=";
for(int i=ce[pan]-1;i>=0;i--){
cout<<ans[pan][i];
}
cout<<endl;*/
for (int i = 0; i < ce[pan] / 2; i++) {
if (ans[pan][i] != ans[pan][ce[pan] - i - 1]) {
//cout<<pan<<endl;
doit(ans[pan], ce[pan]);
return;
}
}
for (int i = 1; i <= pan; i++) {
for (int j = ce[i-1] - 1; j >= 0; j--) {
cout << ans[i-1][j];
}
cout << "+";
bool u=0;
for (int j = 0; j < ce[i-1]; j++) {
if(u!=0||ans[i-1][j]!=0){
cout << ans[i-1][j];
u=1;
}
}
cout << "=";
for (int j = ce[i] - 1; j >= 0; j--) {
cout << ans[i][j];
}
cout << endl;
}
}
int main()
{
string n;
cin >> n;
ce[0]=n.size();
for (int i = 0; i < ce[0]; i++) {
ans[0][ce[0]-i-1] = n[i] - '0';
}
doit(ans[0], ce[0]);
}

Binary file not shown.

View File

@ -0,0 +1 @@
89

View File

@ -0,0 +1 @@
1993

View File

@ -0,0 +1 @@
32767

View File

@ -1,7 +1,29 @@
## z:\Chao\src\Template\test\in.txt
2020/03/14 ÖÜÁù 11:41:28.68
Hello Easy C++ project!
## z:\Chao\src\1658_alllike\test\in.txt
2020/04/24 ÖÜÎå 12:34:41.57
NO
-----------------------------------------------
Process exited after 250 ms with return value 0
## z:\Chao\src\1658_alllike\test\in2.txt
2020/04/24 ÖÜÎå 12:34:41.57
1993+3991=5984
5984+4895=10879
10879+97801=108680
108680+86801=195481
195481+184591=380072
380072+270083=650155
650155+551056=1201211
1201211+1121021=2322232
-----------------------------------------------
Process exited after 200 ms with return value 0
Process exited after 80 ms with return value 0
## z:\Chao\src\1658_alllike\test\in3.txt
2020/04/24 ÖÜÎå 12:34:41.57
32767+76723=109490
109490+94901=204391
204391+193402=397793
-----------------------------------------------
Process exited after 220 ms with return value 0