天勤论坛1000——1011解题笔记
来源:互联网 发布:淘宝手机详情超链接 编辑:程序博客网 时间:2024/04/30 05:05
哎,一事无成的感觉,决定天勤论坛的题从头刷起,然后再去看其他OJ上的一些题,出来混迟早要还的,既然以前没学,那自己就慢慢还吧。
一.首先前八题一律是输入输出的题,那么就来好好说说输入输出的问题。
初次接触这个东西时,有时算法搞出来了,但是输入输出总不对,一开始就没有一个好的人知道我,以至于在这里打了退堂鼓,也是当时自己不够坚定,及时找个人问问多好。
简而言之,熟练掌握所有输入输出技巧,就是掌握所有ACM问题的框架,因为一般来说掌握了输入输出问题的格式,是一个ACM问题最外层的框架。
(1)如果是单纯的输入两组数据输出结果
样例输入
1 5
10 20
样例输出
6
30
while(cin>>a>>b){}这样的框架用于没组样例中数据个数相同,但是不知道多少组数据,输进去就要处理的问题
(2)如果已经指明要输入多少组数据例如:
样例输入
2
1 5
10 20
样例输出
6
30
int n;while(n--){cin>>a>>b}
//注意 此处是n--虽然本人大部分习惯喜欢--n的形式,而且在效果一样的情况下,--n的效率更高。而且事实告诉我,大部分情况下,while循环比for循环要更招人待见。
(3)如果是以0,0这样的数据作为结束的,那么同样是在while循环里控制逻辑更便宜。
while(cin>>a>>b && (a||b)){}由此推之,所有逻辑在while循环里体现即可
其余的一直到1007问题都是用while循环体现出来的复合问题,因此不再赘余。
1008题没什么好说,1009题主要要学会利用set()来处理格式
#include <iostream>#include <iomanip>#define MONTH 12using namespace std;int main(){ int i; float a,sum=0; for(i=1;i<=MONTH;++i) { cin>>a; sum+=a; } cout<<"¥"<<setiosflags(ios::fixed)<<setprecision(2)<<sum/12<<endl; // cout<<"¥"<<fixed<<setprecision(2)<<sum/12<<endl; return 0;}
#include <iostream>#include <iomanip>#include <cstring>#include <cstdio>using namespace std;int main(){ char s[1000004]; while(gets(s)) { int l=strlen(s); int flag=0; for(int i=0; i<l; ++i) { if(s[i]!='A' && s[i]!='B' && s[i]!='C' && s[i]!='D' && s[i]!='F' &&s[i]!=' ') { flag=1; cout<<"Unknown"<<endl; break; } } int sum=0; int length=0; if(flag==0) { for(int j=0; j<l; ++j) { if(s[j]=='A') { sum+=4; length++; } if(s[j]=='B') { sum+=3; length++; } if(s[j]=='C') { sum+=2; length++; } if(s[j]=='D') { sum+=1; length++; } if(s[j]=='F') { sum+=0; length++; } } double average=sum*1.0 / (length *1.0); printf("%.2f\n",average); } } return 0;}
或者输入改为
double average=sum*1.0 / (length *1.0);
cout<<fixed<<setprecision(2)<<average<<endl;
最后一题1011,这一题中本身没什么说的,但是我有一个漏洞的解法,sample可以过,但是test不过,请问为什么?
#include <iostream>using namespace std;int main(){ int n; cin>>n; while(n--) { int a[6]; for(int i=0;i<6;++i) { cin>>a[i]; } if((100*a[0]+10*a[1]+a[2])<(100*a[3]+10*a[4]+a[5])) cout<<"Second"<<endl; else if((100*a[0]+10*a[1]+a[2])>(100*a[3]+10*a[4]+a[5])) cout<<"First"<<endl; else cout<<"Same"<<endl; } return 0;}
原因是,你的每一个版本号,未必是个位数。因此不能用10进制加权来判断。
over。明天再刷几道入门水题。
0 0
- 天勤论坛1000——1011解题笔记
- 解题笔记——前言
- [学习笔记]小型论坛功能——初步论坛形式[终]
- 数组分割——解题笔记
- Palindrome Number ——解题笔记
- codewars解题笔记 —— 匹配字符串
- codewars解题笔记 —— 字符串匹配
- 解题笔记——Noip2012铺地毯
- [学习笔记]小型论坛功能——连接数据库 [1]
- java笔记——jsp实现简单论坛
- 黑马程序员—近期论坛答疑小笔记
- 解题笔记(2)——部分面试题解题思路
- 解题笔记(2)——部分面试题解题思路
- 解题笔记(3)——随机数选择
- 解题笔记(14)——几个字符串的问题
- 解题笔记(10)——约瑟夫环问题
- 解题笔记(11)——字符串转换为整数
- 解题笔记(16)——几个数字的问题
- hdu Find a way(广搜)
- 博客搬到CSDN了,以后就老实的呆在这儿吧~~
- php 大数据量及海量数据处理算法总结
- 当你学不进去的时候,试试“普瑞马法则”
- 如何关闭Microsoft Office上载中心
- 天勤论坛1000——1011解题笔记
- TopCoder SRM 144 DIV2(200-point)
- 为什么说博客、论坛的留言版块外链以无效
- oracle 下WITH CHECK OPTION用法
- ZOJ-3106
- 个人学习笔记开篇
- 大格局思维 应用1
- POJ 2593 DP 多YY才能行
- 黑马程序员_09面向对象(4)多态