天天看點

SGU 107 —— 打表找規律

107. 987654321 problem

time limit per test: 0.25 sec. 

memory>

For given number N you must output amount of N-digit numbers, such, that last digits of their square is equal to 987654321.

Input

Input contains integer number N (1<=N<=106)

Output

Write answer to the output.

Sample Input

8
      
Sample Output

我們都知道,n的平方取模後的結果隻與n的後幾位有關,那麼我們從sqrt(987654321)—>打表,我們可得九位時有8個解,我們在n前面再加一位數就有8*9 = 72個解,然後再加x位數就有72 *(x - 10)個解。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
//    //freopen("out.txt" , "w" , stdout);
//    for(long long i = (long long)(sqrt(987654321.0)) ; i <= 999999999 ; i++)
//    {
//        if(i * i % 1000000000 == (long long)987654321)
//        {
//            cout << i << endl;
//        }
        cout << (i * i) % 10000000000 << '+' << endl;
//    }
    int n;
    while(~scanf("%d" , &n))
    {
        if(n < 9)printf("0\n");
        else if(n == 9)printf("8\n");
        else
        {
            printf("72");
            for(int i = 10 ; i < n ;i++)
            {
                printf("0");
            }
            puts("");
        }
    }
    return 0;
}