USACO Training Section 1.1 題解(共4題)
阿新 • • 發佈:2019-01-20
int aps hid close 傳送門 new span div 一道
第一題
題目傳送門:你的飛碟在這兒
分析
水題一道,輸入兩個字符串,將它們轉換為數字同時相乘,然後判斷一下它們是不是對於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();View Code10 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> 2View Codeusing 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",&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 }View Code
USACO Training Section 1.1 題解(共4題)