很久很久之前校内赛做过的题直接代码吧
可能代码风格不是很好
看了看自己以前的代码 还是有进步的 但是进步不多啊 还是要继续努力 这一练就当反思吧
UVa1585
#include<stdio.h>
#include<string.h>
#define maxn 85
char ch[maxn]={0};
int main()
{
//OX
int T;
scanf("%d",&T);
getchar();
while(T--)
{
int sum=0;
int ans=0;
int countn=0;
gets(ch);
for(int i=0;i<strlen(ch);i++)
{
if(ch[i] == 'O')
{
countn++;
ans+=countn;
// printf("sum:%d countn:%d\n",sum,countn);
}
else
{
countn=0;
sum=0;
}
}
printf("%d\n",ans);
}
return 0;
}
UVa1586
#include<stdio.h>
#include<string.h>
#define maxn 200
//C 12.01 H 1.008 O 16.00 N 14.01
char ch[maxn]={0};
int main()
{
int T;
int num;
double ans;
scanf("%d",&T);
getchar();
while(T--)
{
ans=0.0;
gets(ch);
for(int i=0;i<strlen(ch);i++)
{
switch(ch[i])
{
case 'C':
{ans+=12.01;break;}
case 'H':
{ans+=1.008;break;}
case 'O':
{ans+=16.00;break;}
case 'N':
{ans+=14.01;break;}
default:
{
if((i+1)<strlen(ch) && ch[i+1]<='9' && ch[i+1]>='0')
{
num=10*(ch[i]-'0')+ch[i+1]-'0'-1;
//printf("%d\n",num);
i++;
switch(ch[i-2])
{
case 'C':
{ans+=(12.01*num);break;}
case 'H':
{ans+=(1.008*num);break;}
case 'O':
{ans+=(16.00*num);break;}
case 'N':
{ans+=(14.01*num);break;}
}
}
else
{
num=ch[i]-1-'0';
switch(ch[i-1])
{
case 'C':
{ans+=(12.01*num);break;}
case 'H':
{ans+=(1.008*num);break;}
case 'O':
{ans+=(16.00*num);break;}
case 'N':
{ans+=(14.01*num);break;}
}
}
}
}
}
printf("%.3lf\n",ans);
}
return 0;
}
UVa1225
#include<stdio.h>
#include<string.h>
int num[10];
int main()
{
int T;
int n;
scanf("%d",&T);
while(T--)
{
memset(num,0,sizeof(num));
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
if(i<=9)
{
num[i]++;
}
else if(i<=99)
{
num[i/10]++;
num[i%10]++;
//printf("%d %d \n",n/10,n%10);
}
else if(i<=999)
{
num[(i/100)%10]++;
num[(i/10)%10]++;
num[i%10]++;
}
else
{
num[i/1000]++;
num[(i/100)%10]++;
num[(i/10)%10]++;
num[i%10]++;
}
}
for(int i=0;i<10;i++)
{
printf("%d",num[i]);
if(i!=9)
printf(" ");
}
printf("\n");
}
return 0;
}