「vijos1200」ganggang的烦恼
背景
Zhang Gangrui 年纪大了,记性不好,保险箱的密码记不住了,他只记得密码是一个数的阶乘各个位的数相加的和,最后还有个T或F,
代表这个数是否为素数,正好,你到他家去了,他请你帮他这个忙,并答应事成之后给你100000000 MOD 10 RMB。
描述
输入一个整数n(1000>=n>=0)
输出n的阶乘各个位的数相加的和y,最后再输出T或F,
代表y是否为素数。
输入格式
输入一个整数n(1000>=n>=0)
输出格式
输出n的阶乘各个位的数相加的和y,最后再输出对y是否为素数的判断,
是为T否为F。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include<iostream> #include<cmath> using namespace std; int a[3000]={1},l=1; void wk(int x) { for(int i=0;i<l;i++) a[i]*=x; for(int i=0;i<l;i++) if(a[i]>=10){a[i+1]+=a[i]/10;a[i]%=10;l=max(i+2,l);} } void isprime(int x) { for(int i=2;i<=sqrt(x);i++) if(x%i==0){cout<<'F';return;} cout<<'T'; } int main() { int n,sum=0; cin>>n; for(int i=1;i<=n;i++) wk(i); for(int i=l-1;i>=0;i--) sum+=a[i]; cout<<sum; isprime(sum); return 0; } |
Subscribe