最新消息:点击查看大S的省钱秘笈

Vijos P1200 ganggang的烦恼 C语言版

Vijos题解 Slyar 115浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

背景 Background

Zhang Gangrui 年纪大了,记性不好,保险箱的密码记不住了,他只记得密码是一个数的阶乘各个位的数相加的和,最后还有个T或F,代表这个数是否为素数,正好,你到他家去了,他请你帮他这个忙,并答应事成之后给你100000000 MOD 10 RMB。

描述 Description

输入一个整数n(1000>=n>=0)
输出n的阶乘各个位的数相加的和y,最后再输出T或F,
代表y是否为素数。

输入格式 Input Format

输入一个整数n(1000>=n>=0

输出格式 Output Format

输出n的阶乘各个位的数相加的和y,最后再输出对y是否为素数的判断,
是为T否为F。

Tip:首先是高精度阶乘,之后的素数判断只看n就可以了,当n=2或者n=5时,结果为素数,其他的n结果一定是素数,因为3!以后各位数加起来一定是3的倍数。

#include <stdio.h>

int main(){
int i,j,n,jinwei,weishu=1,temp,x[10000],sum=0;
scanf("%d",&n);
x[0]=1;
for(i=2;i<=n;i++){
jinwei=0;
for(j=1;j<=weishu;j++){
temp=x[j-1]*i+jinwei;
x[j-1]=temp%10;
jinwei=temp/10;
}
while(jinwei){
weishu++;
x[weishu-1]=jinwei%10;
jinwei=jinwei/10;
}
}
for(j=weishu-1;j>=0;j--) sum+=x[j];
if ((n==2)||(n==5)) printf("%dT",sum);
else printf("%dF",sum);
return 0;
}

转载请注明:Slyar Home » Vijos P1200 ganggang的烦恼 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. 嗯,那样就算了; 不过我已经好久没有见过这么好的博客了!!
    And You8年前 (2008-10-25)回复
    • 呵呵,谢谢~我还是会做题的,做了以后应该会发~~
      Slyar8年前 (2008-10-25)回复
  2. 或者是NOIP或NOI原题的答案?? 那样会吸引更多的人的!
    And You8年前 (2008-10-24)回复
    • 呵呵,我可不是为了吸引人~~我很懒的~~
      Slyar8年前 (2008-10-24)回复
  3. 能不能再发一点题目??
    And You8年前 (2008-10-24)回复