问题 A:龙卷风摧毁停车场
一道简单的递推题,而且递推式都给出来了
An=(An-1+1)*2
For循环就好了
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int ans=1;
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
ans=(ans+1)*2;
printf("%d\n",ans);
}
return 0;
}
问题 B:老虎吃布丁
也是递推不过要自己写递推式。。
首先把面包想成一个平面(平时自己切你应该也不会从中间分开把……而且数据也可以看出)
切法:让新的刀和之前的每一刀交叉。
这样第i刀就可以多出i块
所以递推公式就是
Ai=Ai-1+i
For循环就好了…
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main()
{
int n;
int i;
int ans;
while(~scanf("%d",&n))
{
ans=1;
for(i=1;i<=n;++i)
ans=ans+i;
printf("%d\n",ans);
}
return 0;
}
问题 C:一虎杀两羊
两个变量一个算累和一个算阶乘然后加起来就好,当然累和也可以直接求和公式
需要注意的就是会超int所以要用long long定义.
还有0的阶乘是1。。。。。。。。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n;
while(~scanf("%d",&n))
{
int i;
long long sum1=0,sum2=1;
for(i=1;i<=n;++i)
{
sum1+=i;
sum2*=i;
}
printf("%lld\n",sum1+sum2);
}
return 0;
}
问题 D:弗朗明哥舞步
一道博弈论的题。。当然你们可以想成是找规律。。
右脚不可控,但我们可以通过左脚让它变为可控。
右脚走4,左脚就走1
右脚走3,左脚就走2
右脚走2,左脚就走3
右脚走1,左脚就走4
这样就让每一轮肯定走的是5,所以第一步就让之后剩下的格子数变为5的倍数就好,所以如果一开始的数是5的倍数,就不能做到一定左脚线上
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0)
break;
if(n%5==0)
printf("-1\n");
else
printf("%d\n",n%5);
}
return 0;
}
问题 E:脑袋砸核桃
签到题。。。唯一需要注意的就是要空两行,本来想卡最后一行的格式,但垃圾OJ判定不了。。所以就彻底是道SB题了。。。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n;
int flag=0;
while(~scanf("%d",&n))
{
if(flag)
printf("\n");
else
flag=1;
printf("%d\n",n+1);
}
return 0;
}
问题 F:睡熊盲醒
考虑两种情况就好:
1、 整点
2、 7点前还是后,7点后就多一天
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int x,y;
if(m==0)
{
if(n<=7)
{
x=7-n;
y=0;
}
else
{
x=7+24-n;
y=0;
}
}
else
{
if(n<7)
{
x=7-n-1;
y=60-m;
}
else
{
x=7+24-n-1;
y=60-m;
}
}
printf("%d %d\n",x,y);
}
return 0;
}
问题 G:猫转身
应该小学或者初中做过把。。。。。。
虽然看起来小玉跑的路很复杂,但只要算阿福和乘龙碰面需要的时间乘上小玉的速度就好。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
double v1,v2,v3,l;
scanf("%lf%lf%lf%lf",&v1,&v2,&v3,&l);
double ans=l/(v1+v2)*v3;
printf("%.2lf\n",ans);
}
return 0;
}
问题 H:猫抖水
其实只要第一次停下时没被抓住就肯定不会被抓住。
1、 猫速度比阿福慢肯定抓住。
2、 猫一次跑的距离比阿福在猫跑一次加抖水一次跑的距离断就被抓住。
需要主意的是Success Escape!的!是全角的。。为的是告诉你们遇到这种最好直接粘贴复制。。。。。
#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>int main(){ int l,v1,v2,t1,t2; while(~scanf("%d%d%d%d%d",&l,&v1,&v2,&t1,&t2)) { if(v1>=v2) { printf("GG\n"); continue; } if(v2*t1>=l) { printf("Success Escape!\n"); continue; } if(v2*t1<=v1*(t1+t2)) { printf("GG\n"); } else { printf("Success Escape!\n"); } } return 0;}
问题 I:我是黑虎阿福
本来是想做签到题的。。。没想到这么多人没看懂这道题要干什么。。。。
这道题就数一下这套题的标题一共有多少个字。。。一共50个
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> int main() { printf("50\n"); return 0; }
问题 J:老鼠偷奶酪
这道题其实只需要让等待时间尽量少的老鼠先偷奶酪就好。
比如第二组样例15 2 1 5 3
其实很好想,让等待时间少的拿,那么相同等待时间下我就可以拿更多个比如等待时间为6时我可以拿1 2 3也可以拿1 5,显然拿1 23拿到的老鼠更多
想到这里这道题就很简单了,排个序然后拿就好了。。。。
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> int main() { int i,j; int t; int a[100001]; int n; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;++i) { scanf("%d",&a[i]); } for(j=0;j<n-1;j++) { for(i=0;i<n-1-j;i++) { if (a[i]>a[i+1]) { int tmp=a[i]; a[i]=a[i+1]; a[i+1]=tmp; } } } int wait=0; int lost=0; for(i=0;i<n;++i) { if(a[i]>=wait) { wait+=a[i]; } else { lost++; } } printf("%d\n",lost); } return 0; }