SGU 107.987654321 problem
时间: 0.5 sec
空间: 4096 KB
题目描述
对于给定的正整数N求出有多少10进制N位数满足它的平方末尾是987654321。
输入
包含 N (1<=N<=10^6)
输出
答案。
样例输入
8
样例输出
0
{===============================}
分析:
所求的平方末尾长度为9
那么一个数 高于10的位上的数对平方末尾没有影响
假设答案为F[n],
那么当n>9时,多出来n-9位
F[n]=(9*10(n-10))*F[9];
显然当n<9时,F[n]=0;
由此得出,只要知道F[9],便可以求出所有解
这时可以另外写一个搜索程序,得出F[9]=8,即
F[n]=72*10(n-10) ,n>9;
F[n]=8 ,n=9;
F[n]=0 ,n<9;
参考代码:
#include <iostream> #include <iomanip> using namespace std; int n; int main(){ cin>>n; if(n>9) cout<<left<<setfill('0')<<setw(n-8)<<72; else if(n==9) cout<<8; else cout<<0; return 0; }
http://www.cnblogs.com/keam37/ keam所有 转载请注明出处