刷题记录:
题目1及代码如下:
/*分油 Time Limit : 3000/1000ms (Java/Other) ? Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 17 ? Accepted Submission(s) : 6 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 有一天,BK学长和calm学长合伙卖油,直到傍晚他们还有n斤油没有卖出去,他们打算收工,在分完钱后开始分油,他们都很慷慨,不一定要一人一半,但是他们都想要正偶数斤油,但是他们不知道怎么分,恰好聪明的你路过了,所以你应该告诉他们能不能分? Input 多组输入
第一行输入一个整数n(1≤n≤1000) Output 如果可以分输出"YES",否则输出"NO",你的输出没有引号,行末换行 Sample Input 8 Sample Output YES*/ #include<stdio.h> int main() { ?? ?int n; ?? ?while(~scanf("%d",&n)){ ?? ??? ?if(n%2==0&&n>=4){ ?? ??? ??? ?printf("YES\n"); ?? ??? ?}else{ ?? ??? ??? ?printf("NO\n"); ?? ??? ?} ?? ?} ?? ?return 0; }
题目2及代码如下:
/*简单数学 Time Limit : 3000/1000ms (Java/Other) ? Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 17 ? Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 我们来玩一个游戏,这个游戏的规则非常简单,首先选取一个整数闭区间[l,r],然后写下这个这个区间中每个数的全部因数(数字1除外),接着你需要找出被写下的所有因数中出现次数最多的一个数(答案可能不唯一,输出其中最小的一个)
包含多组测试案例,程序应处理到文件结束 Input 每组测试案例包含一行两个整数l,r(2≤l≤r≤1e9) Output 对于每组测试案例,输出一行一个整数表示答案,行末无多余空格,行末换行 Sample Input 3 6 Sample Output 2*/ #include<stdio.h> #include<math.h> int main() { ?? ?long long l,r,i,k; ?? ?while(~scanf("%lld %lld",&l,&r)){ ?? ??? ?k=(int)(sqrt(double(l))); ?? ??? ?if(l==r&&l%2!=0){ ?? ??? ??? ?for(i=2;i<k;i++){ ?? ??? ??? ??? ?if(l%i==0) ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?if(i>=k){ ?? ??? ??? ??? ?printf("%lld\n",l); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?printf("%lld\n",i); ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ?}else{ ?? ??? ??? ?printf("2\n"); ?? ??? ?} ?? ?} ?? ?return 0; }
题目3及代码如下:
/*选择恐惧症 Time Limit : 3000/1000ms (Java/Other) ? Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 9 ? Accepted Submission(s) : 1 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Lisp学长有严重的选择恐惧症。现在他面前有一堆数字,总共有n个数字,Lisp学长喜欢奇数,所以他想从这堆数字中选出m个数字,使得它们的和为奇数。不过他觉得有太多种方案可以选了,更重要的是可能还无法选出来。于是他想请你帮忙,你只需要告诉他能不能从n个数里面选出m个数使得其和为奇数。选出的元素不必是连续的。 Input 多组输入
第一行输入两个整数n,m (1≤n≤1000,1≤m≤n ) 第二行输入n个元素。 每个元素数值大小保证在1000以内,且为正整数。 Output 如果可以从n个数里面选出m个数使得其和为奇数,请输出“YES”,否则输出“NO”。无需输出引号,行末换行。 Sample Input 1 1 999 1 1 1000 2 1 51 50 2 2 51 50 3 3 101 102 103 Sample Output YES NO YES YES NO*/ #include<stdio.h> int main() { ?? ?long long n,m,p,jcnt=0,ocnt=0,i; ?? ?while(~scanf("%lld %lld",&n,&m)){ ?? ??? ?for(i=0;i<n;i++){ ?? ??? ??? ?scanf("%lld",&p); ?? ??? ??? ?if(p%2==0){ ?? ??? ??? ??? ?ocnt++; ?? ??? ??? ?}else{ ?? ??? ??? ??? ?jcnt++; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if(n==m){ ?? ??? ??? ?if(jcnt%2==1){ ?? ??? ??? ??? ?printf("YES\n"); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?printf("NO\n"); ?? ??? ??? ?} ?? ??? ?}else{ ?? ??? ??? ?if((jcnt>0&&ocnt>0)||(jcnt>0&&m%2==1)){ ?? ??? ??? ??? ?printf("YES\n"); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?printf("NO\n"); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?jcnt=0; ?? ??? ?ocnt=0; ?? ?} ?? ?return 0; }
|