文章目录
贴邮票二是之前升级版的贴邮票,就是多了几重循环
回文质数,据说,最省时间判断质数的循环长这样:
int zhishu(int i)
{
int j;
for(j=2;j*j<=i;j++)//for(j=2;j<=sqrt(i);j++)
{
if(i%j==0){return 0;break;
}
}
return 1;
}
en…写17进制的时候,没理清逻辑,浪费了时间,虽然,就算时间充足,我也写不出最后一题。
看这个纠结的过程。。
#include<stdio.h>
int main()
{
int jinzhi10=0,num=0,len=0,chengshu=1,i,t=0,chengshu2=1;
char jinzhi17;
//scanf("%c",&jinzhi17);
//t=jinzhi17-97;
while(1)
{
scanf("%c",&jinzhi17);
if(jinzhi17=='\n')break;
//printf("%c",jinzhi17);
/*scanf("%c",&jinzhi17);
printf("%d",jinzhi17);*/
//printf("%d\n",chengshu);
//printf("%d\n",jinzhi17-97);
//jinzhi10=jinzhi10+(jinzhi17-97)*chengshu;
//printf("%d\n",jinzhi10);
//chengshu*=10;
//len++;
t=t*17+(jinzhi17-97);
//printf("%d\n",t);
}
//t/=17;
/*for(i=1;i<=len;i++)
{
jinzhi10=t/chengshu*chengshu2;
t=t%chengshu;
chengshu/=10;
chengshu2*=10;
}*/
printf("%d\n",t);
return 0;
}
重头戏,(其实似曾相识)
E. 24点三
运行时间限制: 1000 运行内存限制: 65536
作者: scsyuanbaoku 是否specialjudge: False
题目描述
“24点”是一种扑克牌游戏。具体玩法是一副牌中抽去大小王剩下52张,任意抽取4张牌,利用四则运算把牌面上的数算成24。每张牌能且只能用一次。如5、1、7、1,可以用(5-1)×(7-1)或(5+7)×(1+1)两种方法得到。
经计算机准确计算,一副牌(54张,其中去掉两张王牌)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点,如1、1、1、5。
现我们将规则修改如下:1、每次是5张牌;2、只能用加法或减法,不允许用乘法和除法;3、5张牌不要求都用,但如果要用只能用一次;4、牌面点数的范围是大于等于-30且小于等于30。
现在就请你写一段程序来判断某5张牌是否能算出24点。
输入格式
第一行为一个整数T(0<T<20),代表测试数据组数。后边是T行,每行均为5个用空格分隔的整数(每个整数都大于等于-30且小于等于30),代表牌点。
输出格式
为T行,每行对应前边的T组测试数据,如果根据规则能算出24则该行输出YES,否则输出NO。
输入样例
2
6 6 6 6 6
5 5 5 5 5
输出样例
YES
NO
没过的代码,一个朴素的想法是,将所有情况列出来。(最后二十分钟,我就憋出来这个)
#include<stdio.h>
int main()
{
int t,i,a,b,c,d,e;//t hang
scanf("%d",&t);
while(t)
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(a==24||b==24||c==24||d==24||e==24)printf("YES");
else if((a+b==24)||(c+b==24)||(d+b==24)||(e+b==24)||(a+c==24)||(a+d==24)||(a+e==24)||(c+d==24)||(c+e==24)||(d+e==24))printf("YES");
else if((a+b+c==24)||(a+b+d==24)||(a+b+e==24)||(a+c+d==24)||(a+c+e==24)||(b+c+d==24)||(b+c+e==24)||(b+d+e==24)||(c+d+e==24))printf("YES");
else printf("NO");
t--;
}
return 0;
}
然后,有大佬完成了我未完成的工作
还是这个想法,完全可以将它要乘的数构成循环条件
#include<stdio.h>
#include<time.h>
int main()
{
int a,b,c,d,e,i,j,k,l,t,m;
scanf("%d",&t);
srand(time(NULL));
while(t)
{
int flag=0;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
/*a=-30+rand()%61;
b=-30+rand()%61;
c=-30+rand()%61;
d=-30+rand()%61;
printf("%d %d %d %d\n",a,b,c,d);*/
for(i=-1;i<2;i++)
for(j=-1;j<2;j++)
for(k=-1;k<2;k++)
for(l=-1;l<2;l++)
for(m=-1;m<2;m++)
{
if((a*i+b*j+c*k+d*l+m*e)==24)flag=1;
}
if(flag==1)printf("YES\n");
else printf("NO\n");
t--;
}
return 0;
}
寄语自己:长江后浪推前浪,小心你这个前浪都算不上的,死在沙滩上。