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

0
我们都知道,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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值