USACO Training Section 1.1 题解(共4题)
Posted xiaoziyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了USACO Training Section 1.1 题解(共4题)相关的知识,希望对你有一定的参考价值。
第一题
分析
水题一道,输入两个字符串,将它们转换为数字同时相乘,然后判断一下它们是不是对于47同余就可以了。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int i,l,a=1,b=1; 4 string s; 5 int main(){ 6 cin>>s; l=s.size(); 7 for(i=0;i<l;i++) 8 a*=(s[i]-64); 9 cin>>s; l=s.size(); 10 for(i=0;i<l;i++) 11 b*=(s[i]-64); 12 if(a%47==b%47) 13 puts("GO"); 14 else puts("STAY"); 15 return 0; 16 }
第二题
分析
在输入时,我们把给出的钱与退还给送礼者的钱计算出来,累加在每个人账户上,最后输出每个人账户即可。
有个小坑点:一件礼物可能送给0个人。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,i,j,k,m,a,money[15]; 4 string name[15],s,q; 5 int number(string s){ 6 int f=0; 7 for(k=1;k<=n;k++) 8 if(s==name[k]) 9 f=k; 10 return f; 11 } 12 int main(){ 13 scanf("%d ",&n); 14 for(i=1;i<=n;i++) 15 cin>>name[i]; 16 for(i=1;i<=n;i++){ 17 cin>>q>>a>>m; 18 int x,y; 19 if(m==0) 20 continue; 21 x=a/m,y=x*m; 22 money[number(q)]-=y; 23 for(j=1;j<=m;j++){ 24 int f; 25 cin>>s; 26 money[number(s)]+=x; 27 } 28 } 29 for(i=1;i<=n;i++) 30 cout<<name[i]<<" "<<money[i]<<endl; 31 return 0; 32 }
第三题
分析
又是一道水题,只要把年份枚举一边,加上判断闰年,直接AC。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int i,j,k,n,day=1,d[10],m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 4 int main() 5 { scanf("%d",&n); 6 for(i=1900;i<=1899+n;i++) 7 for(j=1;j<=12;j++){ 8 if((i%100&&i%4==0)||i%400==0) 9 m[2]=29; 10 else m[2]=28; 11 for(k=1;k<=m[j];k++,day++) 12 if(k==13) 13 d[day%7]++; 14 } 15 printf("%d",d[6]); 16 for(i=0;i<=5;i++) 17 printf(" %d",d[i]); 18 return 0; 19 }
以上是关于USACO Training Section 1.1 题解(共4题)的主要内容,如果未能解决你的问题,请参考以下文章
USACO Training Section3.1 Score Inflation
等差数列 [USACO Training Section 1.4]
USACO Training Section 3.1 Contact