标签:ios sum mat include sam 多少 输入格式 stream names
SGU 107
求有多少个平方后末尾为987654321的n位数
输入格式:
整数n
输出格式:
答案,即[b]“平方后末尾为987654321的n位数”[/b]的个数
1≤n≤1 000 000
[b][color=#767676]不要问我暴力能过几个点,我只想说呵呵。[/color][/b]
打表找规律
我们可以发现,当n小于等于8的时候,ans全都等于0
当n=9的时候ans全都等于8
然后我们有知道乘积的最后n位数的大小只与两个相乘的数的后n数的大小有关,因此我们要计算平方后后9位数位。。。的数的个数,那么这些数只要后九位数的平方为我们要求的数就好了,然后我们可以看到,多余的每位上的数最高位有9种取法,其他的位上有10种取法,因此公式即为9*8*(10^n-(9+1))
#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 987654321 using namespace std; int n,ans; long long sum; int read() { int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar(); return x*f; } int main() { n=read(); if(n<=8) ans=0; else if(n==9) ans=8; else ans=8*9; printf("%d",ans); for(int i=1;i<=n-10;i++) printf("0"); }
标签:ios sum mat include sam 多少 输入格式 stream names
原文地址:http://www.cnblogs.com/z360/p/7859299.html