昨天下午错过比赛,就补一下其中水题,其他都还不会orz。路漫漫啊
hdu5832 A water problem(水)判断n是否同时被37和173整除。看到有人说见到大数就想用java,我应该暗自庆幸我还没学java么
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 char s[10000001]; 5 const int mod=10001;//73和137的最小公倍数 6 int main(){ 7 int k=1,i,x; 8 while(~scanf("%s",s)){ 9 int n=strlen(s); 10 for(x=i=0;i<n;++i) 11 x=(10*x+s[i]-'0')%mod; 12 printf("Case #%d: %s ",k++,x?"NO":"YES"); 13 } 14 return 0; 15 }
hdu5835 Danganronpa(贪心):注意每种礼物都可以作为神秘或普通礼物。先用最多的礼物作神秘礼物,其他作普通礼物。如果最多的礼物足够多,比如有a:1,b:1,c:100,则排列为cacbc,答案为(s-c)+(s-c+1)=5人(s为礼物数总和),否则答案为s/2。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 int t,n,k=1,i,s,a[10]; 7 scanf("%d",&t); 8 while(t--){ 9 scanf("%d",&n); 10 for(s=i=0;i<n;++i){ 11 scanf("%d",&a[i]); 12 s+=a[i]; 13 } 14 sort(a,a+n); 15 s=min(s/2,(s-a[n-1])*2+1); 16 printf("Case #%d: %d ",k++,s); 17 } 18 return 0; 19 }
hdu5842 Lweb and String(水)看见LIS别先入为主,看完题目,发现只要判断有多少不同字母即可。我不小心神经质的把strlen()又放在循环里然后TLE,笑哭。。。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 char s[100005]; 5 int main(){ 6 int t,k=1,i,x; 7 scanf("%d",&t); 8 while(t--){ 9 scanf("%s",s); 10 int a[26]={0}; 11 int n=strlen(s); 12 for(i=0;i<n;++i) 13 a[s[i]-'a']=1; 14 for(x=i=0;i<26;++i) 15 if(a[i])x++; 16 printf("Case #%d: %d ",k++,x); 17 } 18 return 0; 19 }