corse(函数专题)验证回文数的猜测
This commit is contained in:
parent
1663be60f3
commit
c199712adc
@ -1,3 +1,35 @@
|
||||
# 标题
|
||||
# 『入门』(函数专题)验证回文数的猜测
|
||||
|
||||
* 内容
|
||||
[问题描述]
|
||||
|
||||
教学案例,必须使用函数完成求解!
|
||||
|
||||
左右对称的自然数称回文数。如121,4224,13731等,有人猜测:从任意一个两位或两位以上的自然数开始,将该数与它的逆序数(如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
|
@ -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.
@ -0,0 +1 @@
|
||||
89
|
@ -0,0 +1 @@
|
||||
1993
|
@ -0,0 +1 @@
|
||||
32767
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user