从零开始的C语言之路<二>
来源:互联网 发布:淘宝男鞋店铺 编辑:程序博客网 时间:2024/06/07 07:59
先贴一部分水题
FZU-2229
Yellowstar刚考完微积分期中考,微积分期中考卷一共三个部分,8道选择题每题3分,8道填空题,每题2分,10题答题每题6分,总分100分。Yellowstar考完期中考后已经失去了计算能力,他只记得每部分对的题数,现在想请你帮忙计算一下他的得分,能否通过考试。
难度为0
#include<stdio.h>int main(){ int x,y,z; int s; while(scanf("%d%d%d",&x,&y,&z)!=EOF){ s=x*3+y*2+z*6; if(s>=60){ printf("I passed the exam.\n"); printf("%d\n",s); } else{ printf("Exam was too hard.\n"); printf("%d\n",s); } } return 0;}
FZU-2230
Input :
第一行T,表示T组数据。
每组数据共有四行字符串,每行字符串共八个字符
’#’表示空格
’*’表示红方帅
’.’表示黑方将
此时红方先走
每组输入之间没有空行。
Output
每组数据输出一行。若为红方赢输出Red win,否则输出 Black win
#include<stdio.h>int main(){ int t; char a[5][10]; scanf("%d",&t); while(t--){ int x1,x2,y1,y2,s1,s2,f; for(int i=0;i<4;i++) for(int j=0;j<8;j++){ scanf("%c",&a[i][j]);//这里有个小技巧:一开始再做的时候,提交了几次发现都WA,后来发现是读入回车,在%c前加空格就可以解决这个问题 if(a[i][j]=='*'){ y1=i; x1=j; } if(a[i][j]=='.'){ y2=i; x2=j; } } s1=x1+y1; s2=x2+y2; if(s1>s2) f=s1-s2; else f=s2-s1; if(f%2!=0) printf("Red win\n"); else printf("Black win\n"); printf("%d%d%d%d",x1,y1,x2,y2); }}
规律题,题意很简单清晰,思路比较重要,找出规律,这道题就很简单了。
这道题是这样,把图画上坐标轴,当两者的坐标轴x,y的和相减为偶数时,则黑色方赢,当相减为奇数时,红色方赢。
51nod-1433
小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5。小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数。使得这个数尽可能大,而且可以被90整除。
注意:
1.这个数没有前导0,
2.小K不需要使用所有的牌。
Input:
每个测试数据输入共2行。
第一行给出一个n,表示n张牌。(1<=n<=1000)
第二行给出n个整数a
output:
共一行,表示由所给牌组成的可以被90整除的最大的数,如果没有答案则输出”-1”(没有引号)
#include<stdio.h> int X[2]; int A;int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&A); A==5?X[1]++:X[0]++; } if(!X[0]) { printf("-1"); return 0; } while(X[1]) { int S=X[1]*5; if(S%9==0) { while(X[1]--) printf("5"); while(X[0]--) printf("0"); return 0; } else X[1]--; } if(X[0]) printf("0"); else printf("-1"); return 0;}
一样是规律题,与能被2整除一样,能被90整除的条件就是个个位上的数相加能被9整除且末尾有0,则能被90整除。
这里贴一段最早用桶排做的代码,这里犯了一个问题,把简单问题复杂化,导致超时。
#include<stdio.h>int main(){ int a[10],t; int n; for(int i=0;i<=10;i++){ a[i]=0; } scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&t); a[t]++; } if(a[5]*5%9==0&&a[0]!=0){ for(int i=10;i>=0;i--) for(int j=1;j<=a[i];j++) { printf("%d",i); } } if(a[5]*5%9!=0&&a[0]!=0){ printf("0"); } if(a[0]==0){ printf("-1"); }}
51nod-1413
一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。
当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。
#include<stdio.h>int main(){ int n; scanf("%d",&n); int a=0; while(n){ int m=n%10; if(a<m) a=m; n/=10; } printf("%d",a); return 0;}
tip:虽然是水题,但能从水题中进行学习,找出自己的不足,进行弥补,也不失为一种进步的方法。
- 从零开始的C语言之路<二>
- 从零开始的C语言之路<->
- 从零开始的C语言知识点
- 从零开始征服C语言之变量
- 红黑树(二)之 C语言的实现
- C语言的那些事儿之二
- 红黑树(二)之 C语言的实现
- 【sql server 2008】从零开始的数据库复习之路(二)
- 从零开始学习C语言
- 从零开始学习unity挖坑之路二
- C语言知识结构之二
- C语言函数之二
- C语言基础知识之二
- 三人行之C从零开始
- 从零开始学c语言教程
- 从零开始学习C语言 源代码
- C语言的那些小秘密之指针(二)
- C语言的那些小秘密之【指针(二)】
- DES/3DES/AES 三种对称加密算法在 Java 中的实现
- Qt 自定义PushButton
- Java后端2017书单推荐
- Can‘t connet to repository from configured remote.
- 关于android studio 引入第三方源码
- 从零开始的C语言之路<二>
- (一)CoreBluetooth iOS 蓝牙 “中心模式”
- 在 windows server 2008 下配置邮件服务器
- 69决定了的事情一定要达到
- 内存池技术
- VUE+SSM(java)+restful构建网站
- 谷歌,IBM和Lyft开源大型微服务系统管理工具lstio
- Class 文件结构
- Linux学习第一篇--安装CentOS7