水题几枚zoj 1195 zoj 2421 zoj 2405 zoj 2835 zoj 1274
2011-01-23 20:53
239 查看
/*zoj 1195 水题一枚。。原来想做呢。没写,今天看到dang同学写了,就看了下。。果断a掉 * 说的是家里有很多电器,但是电器全开的话就会超过家庭用电的最大功率。 * * 然后给你一些电器和各个电器所使用的功率。然后又给出了几个操作,问按照操作的顺序 * 是否会超出额定功率。如果超出就输出超出了。。 * 如果没有那么就输出按照这个操作所能达到的最大功率。 * * * zjy 20110121 * * */ #include <stdio.h> #include <string.h> int main(void) { int n,m,c; // n,电器的数目,m,操作的数目,c限额; int status[25]; //描述电器的状态; int cap ; //记录当前所消耗的电量; int maxcap ; //记录最多所消耗的电量; int flag; //标记是否超出规定的电量; int a[25]; int op,count=1; while (scanf("%d %d %d",&n,&m,&c) != EOF) { if(n==0&&m==0&&c==0) break; printf("Sequence %d/n",count++); cap = 0; maxcap = 0; flag = 0; memset(status,0,sizeof(status)); for (int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=m;i++) { scanf("%d",&op); if(status[op] == 0) { status[op] =1; cap+=a[op]; if(cap<=c&∩>=maxcap) maxcap=cap; //if(cap>c) } else { status[op] = 0; cap-=a[op]; } if(cap>c) flag = 1; } if(flag == 1) printf("Fuse was blown./n/n"); else printf("Fuse was not blown./nMaximal power consumption was %d amperes./n/n",maxcap); } return 0; }
===========================分一下===============================
/* zoj 2421 水题一枚。。。貌似我现在也只会做水题了阿。。。纠结。。。 * 这题说的是一个什么什么序列,这个序列首位是0然后下一位是前一位减去m。m是该元素在序列中的位置。如果得到的结果大于零,并且在序列中没有出现过,那么成立。 * 如果不能满足这个条件的话,就要把这个元素的值改为a[m-1]+m; * * 这道题一开始我判断元素是否重复是通过一个一个找来判断的。结果发现速度很慢。。也确实,一个一个找那得找多少次阿。。 * 后来看别人的代码才发现原来标记以下这个元素是否出现过不就完了么? * * 真纠结,,,不过也学到点经验呢。。。 * * 20110120 * * * * * */ #include <stdio.h> int a[500002]={0}; //{0,1,3,6,2,7,13,20,12,21,11,22,10,23,9}; int b[4000020]={0}; int main(void) { b[0]=1; int i,n; for(i=1;i<500001;i++) { a[i]=a[i-1]-i; if(a[i]<=0 || b[ a[i] ] == 1) { a[i]=a[i-1]+i; } b[ a[i] ] = 1; } while(scanf("%d",&n) != EOF && n!=-1) { printf("%d/n",a ); } return 0; }
===========================分一下===============================
/* zoj 2405 党童鞋提供的水题,好久没刷题了。好生疏 * * * 题目的意思是找出从2992开始的四位数中10进制12进制16进制每位上的数加起来的和相等的数。 * * 21000120 * * */ #include <stdio.h> int sum(int n) { int i,sum=0; while(n) { i=n%10; sum+=i; n/=10; } return sum; } int main(void) { int n=2992,nn,nnn; int sum12=0,sum16=0; int i; while(n<2996) { sum12=0;sum16=0; nnn=nn=n; while(nnn) { i=nnn%16; nnn/=16; sum16+=i; } while(nn) { i=nn%12; nn/=12; sum12+=i; } if(sum16==sum12&&sum12==sum(n)) printf("%d/n",n); n++; } return 0; }
===========================分一下===============================
/* zoj 2835 Magic Square * 水题 判断幻方的。。 * zjy 20110123 * * */ #include <stdio.h> #include <string.h> int a[20][20]; int n; int H_check() { int sum = 0; for (int j=0;j<n;j++) sum+=a[0][j]; for(int i=0;i<n;i++) { int temp_sum=0; for (int j=0;j<n;j++) temp_sum+=a[i][j]; if(temp_sum != sum) return 0; } return sum; } int L_check() { int sum = 0; for (int j=0;j<n;j++) sum+=a[j][0]; for(int i=0;i<n;i++) { int temp_sum=0; for (int j=0;j<n;j++) temp_sum+=a[j][i]; if(temp_sum != sum) return 0; } return sum; } int A_check() //判断对角线上的元素之和是否相等。。相等就返回对角线上的元素之和。不想等就返回0; { int sum1=0,sum2=0; for(int i=0;i<n;i++) sum1+=a[i][i]; for (int i=0;i<n;i++) sum2+=a[i][n-i-1]; if(sum1==sum2) return sum1; return 0; } int main(void) { int used[10002]; while(scanf("%d",&n) != EOF && n) { memset(a,0,sizeof(a)); memset(used,0,sizeof(used)); int flag = 0; for (int i=0;i<n;i++) for(int j=0;j<n;j++) { scanf("%d",&a[i][j]); if( used[ a[i][j] ] ) flag = 1; //那么肯定不是一个幻方; else used[a[i][j]] = 1; } if(!flag&&H_check()&&H_check()==L_check()&&H_check()==A_check()) printf("Yes/n"); else printf("No/n"); } return 0; }
===========================分一下===============================
/*zoj 1274 模拟题。。 * zjy 20110123 * * */ #include <stdio.h> #include <string.h> int getNum(char a[]) { if(a[0]>='a'&&a[0]<='z') a[0]-=32; if (strcmp(a,"A") == 0) return 1; if (strcmp(a,"A#") == 0 || strcmp(a,"Bb")==0) return 2; if (strcmp(a,"B") == 0) return 3; if (strcmp(a,"C") == 0) return 4; if (strcmp(a,"C#") == 0|| strcmp(a,"Db")==0) return 5; if (strcmp(a,"D") == 0) return 6; if (strcmp(a,"D#") == 0|| strcmp(a,"Eb")==0) return 7; if (strcmp(a,"E") == 0) return 8; if (strcmp(a,"F") == 0) return 9; if (strcmp(a,"F#") == 0|| strcmp(a,"Gb")==0) return 10; if (strcmp(a,"G") == 0) return 11; if (strcmp(a,"G#") == 0|| strcmp(a,"Ab")==0) return 12; } int B_judge(int a,int b,int c) { if(a>b) { a^=b;b^=a;a^=b; } if(b>c) { b^=c;c^=b;b^=c; } if(a>b) { a^=b;b^=a;a^=b;} if(c-b==4&&b-a==3) return a; if(a+12-c==4&&c-b==3) return b; if(b+12-a-12==4&&a+12-c ==3) return c; return 0; } int A_judge(int a,int b,int c) { if(a>b) { a^=b;b^=a;a^=b;} if(b>c) { b^=c;c^=b;b^=c; } if(a>b) { a^=b;b^=a;a^=b;} if(c-b==3&&b-a==4) return a; if(a+12-c==3&&c-b==4) return b; if(b+12-a-12==3&&a+12-c ==4) return c; return 0; } int main(void) { char aa[12][3]={"A","A#","B","C","C#","D","D#","E","F","F#","G","G#"}; char str1[3],str2[3],str3[3],str11[3],str22[3],str33[3]; int a,b,c; while (scanf("%s %s %s",str1,str2,str3) != EOF) { strcpy(str11,str1); strcpy(str22,str2); strcpy(str33,str3); a = getNum(str1); b = getNum(str2); c = getNum(str3); if ( A_judge(a,b,c) ) printf("%s %s %s is a %s Major chord./n",str11,str22,str33,aa[A_judge(a,b,c)-1]); else if( B_judge(a,b,c) ) printf("%s %s %s is a %s Minor chord./n",str11,str22,str33,aa[B_judge(a,b,c)-1]); else printf("%s %s %s is unrecognized./n",str11,str22,str33); } return 0; }
相关文章推荐
- ZOJ - 2421 Recaman's Sequence(打表水题)
- poj2421(kruskal)(水题)
- 字典树水题几枚
- UVALive2536 POJ1248 HDU1015 ZOJ1403 Safecracker【密码+暴力+水题】
- ZOJ - 2405 Specialized Four-Digit Numbers
- zoj 3827 Information Entropy 【水题】
- zoj2405 ------------Specialized Four-Digit Numbers
- ZOJ-2405
- POJ 2260(ZOJ 1949) Error Correction 一个水题
- zoj 1041 水题
- zoj1796水题
- zoj1949水题
- zoj 2172 Symmetric Order水题
- zoj水题分类
- zoj 1730 Crazy Tea Party(水题吗?我不会啊!!!)
- zoj 2835
- HDU--杭电--1195--Open the Lock--深搜--忘记说句话装逼了,都是什么双向广搜,不知道怎么想的,直接就是一个深搜的水题好不好?
- HDU1004 ZOJ2104 Let the Balloon Rise【MAP+水题】
- POJ1003 UVALive2294 HDU1056 ZOJ1045 Hangover【数学计算+水题】
- poj1484||zoj1195 Blowing Fuses (模拟)