NOI题解(1.5编程基础之循环控制)(待补全)
来源:互联网 发布:storm编程 书籍下载 编辑:程序博客网 时间:2024/06/04 19:15
01:求平均年龄
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int num[100]; int sum=0; for(int i=0;i<count;i++) { cin>>num[i]; sum+=num[i]; } cout<<fixed<<setprecision(2)<<sum/(float)count; return 0;}
02:财务管理
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ float num[12]; float sum=0; for(int i=0;i<12;i++) { cin>>num[i]; sum+=num[i]; } cout<<fixed<<setprecision(2)<<"$"<<sum/(float)12; return 0;}
03:均值
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; float num; float sum=0; for(int i=0;i<count;i++) { cin>>num; sum+=num; } cout<<fixed<<setprecision(4)<<sum/(float)count; return 0;}
04:求整数的和与均值
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int num; int sum=0; for(int i=0;i<count;i++) { cin>>num; sum+=num; } cout<<sum<<" "<<fixed<<setprecision(5)<<(double)sum/count;//float会wrong answer,我私以为float够用了,不知道为什么会错 return 0;}
05:最高的分数
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int num; int max=0; for(int i=0;i<count;i++) { cin>>num; if(max<num) max=num; } cout<<max; return 0;}
06:整数序列的元素最大跨度值
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int num; int min=1000; int max=0; for(int i=0;i<count;i++) { cin>>num; if(max<num) max=num; if(min>num) min=num; } cout<<max-min; return 0;}
07:奥运奖牌计数
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int a,b,c; int gold=0,sliver=0,cotton=0; for(int i=0;i<count;i++) { cin>>a>>b>>c; gold+=a; sliver+=b; cotton+=c; } cout<<gold<<" "<<sliver<<" "<<cotton<<" "<<gold+sliver+cotton; return 0;}
08:多边形内角和
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int sum=0,num; for(int i=0;i<count-1;i++) { cin>>num; sum+=num; } cout<<(count-2)*180-sum ; return 0;}
09:奇数求和
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int m,n,temp,sum=0; cin>>m>>n; if(m%2==0) temp=m+1; else temp=m; while(temp<=n) { sum+=temp; temp+=2; } cout<<sum; return 0;}
10:满足条件的数累加
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int m,n,temp,sum=0; cin>>m>>n; for(int i=m;i<=n;i++) { if(i%17==0) sum+=i; } cout<<sum; return 0;}
11:整数的个数
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count,num; cin>>count; int time1=0,time5=0,time10=0; for(int i=0;i<count;i++) { cin>>num; if(num==1) time1++; if(num==5) time5++; if(num==10) time10++; } cout<<time1<<endl<<time5<<endl<<time10<<endl; return 0;}
12:与指定数字相同的数的个数
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int N,m,num; cin>>N>>m; int time=0; for(int i=0;i<N;i++) { cin>>num; if(num==m) time++; } cout<<time; return 0;}
13:乘方计算
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int a,n; cin>>a>>n; int num=1; for(int i=0;i<n;i++) { num=num*a; } cout<<num; return 0;}
14:人口增长问题
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int a; int n; cin>>a>>n; double num=(double)a; for(int i=0;i<n;i++) { num=num*(1.001); } cout<<fixed<<setprecision(4)<<num; return 0;}
15:银行利息
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int R,M,Y; cin>>R>>M>>Y; double num=(double)M; for(int i=0;i<Y;i++) { num=num*(1+(double)R/100); } cout<<(int)num; return 0;}
16:买房子
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int N,K; cin>>N>>K; int count=0; double money=200; double earn=0; while(earn<money) { money=200; for(int i=0;i<count;i++) money=money*(1+(double)K/100); count++; if(count>20)//不判断可能会超时 break; earn=count*N; //cout<<earn<<":"<<money<<endl; } if(count>20) cout<<"Impossible"; else cout<<count; return 0;}
17:菲波那契数列
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int num1=1,num2=1; int k; cin>>k; if(k<=2) cout<<"1"; else{ for(int i=0;i<k-2;i++) { int temp=num1+num2; num1=num2; num2=temp; } cout<<num2; } return 0;}
18:鸡尾酒疗法
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; double num[21]; int num1,num2; for(int i=0;i<count;i++) { cin>>num1>>num2; num[i]=(double)num2/num1; } for(int i=0;i<count-1;i++) { if(num[i+1]-num[0]>0.05) cout<<"better"<<endl; else if(num[i+1]-num[0]<-0.05) cout<<"worse"<<endl; else cout<<"same"<<endl; } return 0;}
19:救援
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ double x,y; int num; int count; double sum=0; cin>>count; for(int i=0;i<count;i++) { cin>>x>>y>>num; sum+=2*(sqrt(pow(x,2)+pow(y,2))/50)+num*1.5; } cout<<ceil(sum); return 0;}
20:球弹跳高度的计算
#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ double h; cin>>h; double h10; double hsum=0; for(int i=0;i<10;i++) { if(i!=9){ hsum+=h; h=h/2; hsum+=h;} else{ hsum+=h; h=h/2; h10=h; } } cout<<hsum<<endl<<h10<<endl; return 0;}
21:角谷猜想
#include "iostream"#include "math.h"#include "iomanip"/* 64位机下 int 4字节 ,long int 8字节 */using namespace std;int main(){ long int num;//这里用int会Output Limit Exceeded cin>>num; if(num==1) { cout<<"End"; }else{ while(num!=1){ if(num%2==0) { num=num/2; cout<<num*2<<"/2="<<num<<endl; }else{ cout<<num<<"*3+1="; num=num*3+1; cout<<num<<endl; } } cout<<"End"; } return 0;}
22:津津的储蓄计划
#include "iostream"using namespace std;int main(){ int num[12]; for(int i=0;i<12;i++) { cin>>num[i]; } int money=300; int store=0; int flag=true; for(int i=0;i<12;i++) { if(money-num[i]>=0) { store+=(money-num[i])/100*100; money=money-(money-num[i])/100*100-num[i]+300; //cout<<store<<" "<<money<<endl; }else{ cout<<"-"<<i+1; flag=false; break;//不加break会WA,因为如果接下来的月份如果有不够支出的情况会输出最大月份 } } if(flag) cout<<store+store*0.2+money%300;//最后一个月可能剩下钱 return 0;}
23:药房管理
#include "iostream"using namespace std;int main(){ int m,n,num[100]={0}; cin>>m>>n; for(int i=0;i<n;i++) { cin>>num[i]; } int count=0; for(int i=0;i<n;i++) { m=m-num[i]; if(m<0) { count++; m+=num[i]; } } cout<<count; return 0;}
24:正常血压
#include "iostream"using namespace std;int main(){ int n; cin>>n; int num1,num2; int time=0,temp=0; for(int i=0;i<n;i++) { cin>>num1>>num2; if(num1>=90&&num1<=140&&num2>=60&&num2<=90) { temp++; }else { temp=0; } if(time<temp) time=temp; } cout<<time;}
25:求特殊自然数
#include "iostream"using namespace std;/* 七进制和九进制都是三位数,说明该数十进制范围是81~342 整数部分,(123)十进制==(234)七进制 竖除法,逆序取余 7 |123 ------ 7 | 17 - 4 左边为商 右边为余数 ----- 7| 2 - 3 ---- 7| 0 - 2 */int get7(int num)//3位数{ int num1=0,num2=0,num3=0; num3=num%7; num=num/7; num2=num%7; num=num/7; num1=num; return num1*100+num2*10+num3;}int get9(int num)//3位数{ int num1=0,num2=0,num3=0; num3=num%9; num=num/9; num2=num%9; num=num/9; num1=num; return num1*100+num2*10+num3;}int getBack(int num)//3位数{ int num1=0,num2=0,num3=0; num1=num%10; num=num/10; num2=num%10; num=num/10; num3=num; return num1*100+num2*10+num3;}int main(){ for(int i=81;i<=342;i++) { //cout<<i<<" "<<get7(i)<<" "<<get9(i)<<" "<<getBack(get9(i))<<endl; if(get7(i)==getBack(get9(i))) cout<<i<<endl<<get7(i)<<endl<<get9(i); } return 0;}
26:统计满足条件的4位数个数
#include "iostream"using namespace std;int main(){ int count; cin>>count; int num=0; int n; for(int i=0;i<count;i++) { cin>>n; int d1=n%10; int d2=(n%100)/10; int d3=(n%1000)/100; int d4=n/1000;// cout<<d1<<" "<<d2<<" "<<d3<<" "<<d4<<endl; if(d1-d4-d3-d2>0) num++; } cout<<num; return 0;}
27:级数求和
#include "iostream"using namespace std;int main(){ double sn=0; int K; cin>>K; int count=1; while(sn<=K) { sn+=1/(double)count; count++; } cout<<--count; return 0;}
28:分离整数的各个数位
#include "iostream"using namespace std;int main(){ int num; cin>>num; while(num>=10) { cout<<num%10<<" "; num=num/10; } cout<<num; return 0;}
29:数字反转
#include "iostream"using namespace std;int main(){ string str; cin>>str; bool isZero=false; bool flag=false; if(str=="0") isZero=true; if(str.at(0)=='-') { cout<<"-"; flag=true; } bool zeroF=true; int index=0; if(flag) index++; for(int i=0;i<str.length()-index;i++) { if(isZero) { cout<<str.at(str.length()-1-i); } else { if(str.at(str.length()-1-i)!='0') { cout<<str.at(str.length()-1-i); zeroF=false; } else { if(zeroF) continue; else cout<<str.at(str.length()-1-i); } } } return 0;}
30:含k个3的数
#include "iostream"#include "math.h"using namespace std;int main(){ string str; int k; cin>>str>>k; int sum=0; int count=0; for(int i=0;i<str.length();i++) { if(str.at(i)=='3') count++; sum+=(str.at(str.length()-1-i)-48)*pow(10,i); }// cout<<sum<<" "<<count<<endl; if(sum%19==0&&count==k) { cout<<"YES"; }else{ cout<<"NO"; } return 0;}
31:开关灯
#include "iostream"using namespace std;void process(bool flag[],int k,int M){ for(int i=0;i<M;i++) { if((i+1)%k==0) flag[i] = !flag[i]; }}int main(){ int M,N; cin>>M>>N; bool flag[M]; for(int i=0;i<M;i++) flag[i] = true; for(int i=1;i<=N;i++) { if (i == 1) { for(int i=0;i<M;i++) flag[i] = false; } else { process(flag, i, M); } } bool firstF = true; for(int i=0;i<M;i++) { if(!flag[i]) { if(firstF) { cout << i + 1; firstF = false; }else cout<<","<<i+1; } }}
32:求分数序列和
#include "iostream"#include "iomanip"using namespace std;int main() { float p = 1, q = 2, sum = 0; int N; cin >> N; for(int i=0;i<N;i++) { sum+=q/p; //qi+1= qi+ pi, pi+1=qi float tmp = q; q = q + p; p = tmp; } cout<<fixed<<setprecision(4)<<sum;}
33:计算分数加减表达式的值
#include "iostream"#include "iomanip"using namespace std;int main() { float sum = 0; int N; cin >> N; for(int i=1;i<=N;i++) { //1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + ... + (-1)n-1·1/n if(i%2==1) sum += 1/(float)i; else sum -= 1/(float)i; } cout<<fixed<<setprecision(4)<<sum;}
34:求阶乘的和
#include "iostream"#include "iomanip"using namespace std;int getFactorial(int k){ int result = 1; for(int i=1;i<=k;i++) { result*=i; } return result;}int main() { int sum = 0; int N; cin >> N; for(int i=1;i<=N;i++) { sum+=getFactorial(i); } /*N 取值范围是2~11 因此sum最大值为43954713,在int的范围内*/ cout<<sum;// cout<<INT_MAX<<endl;}
0 0
- NOI题解(1.5编程基础之循环控制)(待补全)
- NOI题解(1.7编程基础之字符串)(待补全)
- NOI题解(1.8编程基础之多维数组)(待补全)
- NOI题解(1.9编程基础之顺序查找)(待补全)
- NOI题解(1.8编程基础之多维数组)(待补全)
- NOI题解(1.1编程基础之输入输出)
- NOI题解(1.10编程基础之简单排序)
- NOI题解(1.12编程基础之函数与过程抽象)(待补全)
- NOI题解(1.6编程基础之一维数组)(待补全)
- NOI题解(1.2编程基础之变量定义、赋值及转换)
- NOI题解(1.3编程基础之算术表达式与顺序执行)
- NOI题解(1.4编程基础之逻辑表达式与条件分支)
- NOI题库1.11编程基础之二分查找 矩形分割
- 【NOI题解】 3.7数据结构之堆
- 【NOI题解】 3.3数据结构之栈
- 【NOI题解】 3.1数据结构之结构
- Java语法基础之循环控制
- 编程基础之流程控制
- centos7 开放端口
- SSLv3&TLS协议学习笔记(一)
- Design Patterns - Observer Pattern
- light oj 1004 水DP
- Java 并发:sleep,yield,join
- NOI题解(1.5编程基础之循环控制)(待补全)
- 设置ctl.start 属性启动init.rc 中service以及权限问题
- 关于appserv 中 php 安装php_imagic的问题
- java中按文件中的分隔符(空格、换行符等)逐项读取文件中的数据
- MySQL profiling 查找Query瓶颈
- Java微信二次开发之6-文本消息体内容换行的使用
- ToolBar
- div+css实现盖章
- 友盟新浪微博分享成功后出现白屏界面-已解决