vijos P1200 ganggang的烦恼
2014-11-06 12:50
239 查看
背景
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
样例输入1[复制]
10
样例输出1[复制]
27F
题解
高精度乘法和素数判断。#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<algorithm>
#define mod 10007
#define N 10000
#define ll long long
using namespace std;
int n;
struct shu{int s[500],l;} a,b,c;
int ans;
shu operator * (const shu &x,const shu &y)
{
shu ans;
memset(ans.s,0,sizeof(ans.s));
int i,j;
for(i=1;i<=x.l;i++)
for(j=1;j<=y.l;j++)
ans.s[i+j-1]+=x.s[i]*y.s[j];
ans.l=x.l+y.l-1;
for(i=1;i<=ans.l;i++)
{if(ans.s[i]>=N)
{ans.s[i+1]+=ans.s[i]/N;
ans.s[i]%=N;
}
}
i=ans.l+1;
while(ans.s[i]>0)
{if(ans.s[i]>=N)
{ans.s[i+1]+=ans.s[i]/N;
ans.s[i]%=N;
}
i++;
}
ans.l=i-1;
return ans;
}
void calcu()
{
int i,j;
c.s[1]=1; c.l=1;
for(i=2;i<=n;i++)
{a=c;
b.s[1]=i; b.l=1;
c=b*a;
}
for(i=1;i<=c.l;i++)
for(j=1;j<=4;j++)
{ans+=c.s[i]%10;
c.s[i]/=10;
}
printf("%d",ans);
}
void check()
{
int i;
for(i=2;i<=sqrt(ans);i++)
{if(ans%i==0) {puts("F"); return;}}
puts("T");
}
int main()
{
scanf("%d",&n);
calcu(); check();
return 0;
}
相关文章推荐
- 80后单身的十大烦恼 病的不轻啊
- 生活中的烦恼
- 王然的烦恼--她很精通linux啦
- [个人管理]一位技术人员成长的烦恼【转载】
- 『phphot』【SD2.0大会】未来手机用户将彻底摆脱死机烦恼
- 企业的烦恼(1)
- 我们之所以会心累,就是常常徘徊在坚持和放弃之间,举棋不定。我们之所以会烦恼,就是记性太好,该记的,不该记的都会留在记忆里。我们之所以会痛苦,就是追求的太多。我们之所以不快乐,就是计较的太多,不是我们拥有的太少,而是我们计较的太多。
- 编程烦恼的来源
- manager的烦恼
- 不再为安装软件而烦恼[优化版]-fedora下北邮校内yum的设置
- 学会放下压力,烦恼,自卑,懒惰,消极,抱怨,犹豫,狭隘
- 谷歌浏览器(chrome)搜图插件发布啦 以后再也不用为眼前的图片出自何处烦恼了。
- Android中生成.bat文件,解决每次打新包的烦恼
- CIO烦恼之六:系统一旦发生宕机,损失巨大。如何保证系统连续性?
- NYOJ 279 队花的烦恼二和NYOJ 176 整数划分(二)【dp问题或递归】
- [IT幽默]老婆软件升级后的烦恼
- 树状数组 经理的烦恼
- 摆脱装机的烦恼---最爱云端
- 人的烦恼
- 【动态规划】Tom的烦恼 tom.pas/c/cpp/in/out