1
5
40 codeforce老题,妈蛋,看到标程一口血! #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
int sum=0;
int t=n;
while(t>2)
{
sum+=t/3;
int k=t/3;
t=k+t%3;
//printf(" %d\n",sum);
}
if(n>=3&&t==2) sum+=1;
printf("%d\n",sum);
}
return 0;
} 看到标程,推算一下,那个结果就是n/2!!!
#include <stdio.h>
int main()
{
//freopen("a.in", "r", stdin);
//freopen("A.out", "w", stdout);
int n;
while(scanf("%d", &n), n)
{
printf("%d\n", n / 2);
}
return 0;
}
弟弟的作业 | Time
Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB | Total submit users: 100, Accepted users: 93 | Problem
10931 : No special judgement | Problem description | 你的弟弟刚做完了“100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。
| Input | 输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,且不包含任何空白字符。输入的所有整数均不含前导0。
| Output | 输出仅一行,包含一个非负整数,即弟弟答对的题目数量。
| Sample Input | 1+2=3
3-1=5
6+7=?
99-0=99
| Sample Output | 2 | Problem Source | The Sixth Hunan Collegiate Programming Contest | 我的代码,又臭又长!!!! #include<cstdio>
#include<cstring>
#include<cmath>
int main()
{
char s[20];
int sum=0,base;
int sum1,sum2,sum3;
while(scanf("%s",s))
{
//if(s[0]=='E'&&s[1]=='O'&&s[2]=='F') break;
int len=strlen(s);
int bj;
for(int i=0;i<len;i++)
{
if(s[i]=='+'||s[i]=='-')
{
bj=i;
break;
}
}
sum1=0;
base=1;
for(int i=bj-1;i>=0;i--)
{
sum1+=(s[i]-'0')*base;
base*=10;
}
sum2=0;
int bjbj;
for(int i=bj+1;i<len;i++)
{
if(s[i]=='=')
{
bjbj=i;
break;
}
}
base=1;
for(int i=bjbj-1;i>bj;i--)
{
sum2+=(s[i]-'0')*base;
base*=10;
}
sum3=0;
int base=1;
for(int i=len-1;s[i]!='=';i--)
{
sum3+=(s[i]-'0')*base;
base*=10;
}
if(s[bj]=='+')
{
if(sum1+sum2==sum3) sum+=1;
}
else if(s[bj]=='-')
{
if(sum1-sum2==sum3) sum+=1;
}
//printf("%d %d %d %d\n",sum1,sum2,sum3,sum);
}
printf("%d\n",sum);
return 0;
}
标程!又一次哭了! <pre name="code" class="cpp">#include<stdio.h>
int main() {
char s[99];
int a, b, c, n = 0;
while(scanf("%s", &s) == 1) {
if(sscanf(s, "%d+%d=%d", &a, &b, &c) == 3 && a+b==c) n++;
if(sscanf(s, "%d-%d=%d", &a, &b, &c) == 3 && a-b==c) n++;
}
printf("%d\n", n);
return 0;
}
数字整除 | Time Limit: 1000ms, Special
Time Limit:2500ms, Memory Limit:65536KB | Total submit users: 89, Accepted users: 83 | Problem 10932 : No
special judgement | Problem description | 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。 | Input | 输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10100),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。 | Output | 对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。 | Sample Input | 34201209876541317171717171717171717171717171717171717171717171717180 | Sample Output | 1010 | Problem Source | The Sixth Hunan Collegiate Programming Contest |
#include<stdio.h>
#include<string.h>
int main()
{
char s[200];
while(scanf("%s", &s) == 1)
{
if(!strcmp(s, "0")) break;
int m = 0;
int ss=strlen(s);
m=s[0]-'0';
for(int i = 1; i < ss; i++)
{
m = (m*10+s[i]-'0')%17;
//printf("%d\n",m);
}
printf("%d\n", m==0?1:0);
}
return 0;
}
早上俩小时拍出来三题,晚上看后面的,其实就是直接拍就好了,脑残水!
|