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

 

 

 

posted @ 2014-06-29 10:52  keambar  阅读(139)  评论(0编辑  收藏  举报