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所有 转载请注明出处

浙公网安备 33010602011771号