续上一篇文章OpenJudge NOI 1.5编程基础之循环控制(1-10题) C++ 解题思路
11 整数的个数
#include <cstdio>
using namespace std;
int main() {
int k,one=0,five=0,ten=0;
scanf("%d",&k);
for (int i=1;i<=k;++i) {
int get;
scanf("%d",&get);
switch (get) {
case 1:
one++;
break;
case 5:
five++;
break;
case 10:
ten++;
break;
default:
break;
}
}
printf("%d\n%d\n%d",one,five,ten);
return 0;
}
12 与指定数字相同的数的个数
#include <iostream>
using namespace std;
int main() {
int n,m,sum=0;
cin>>n>>m;
for (int i=1;i<=n;++i) {
int get;
cin>>get;
if (get==m) sum++;
}
cout<<sum;
return 0;
}
13 乘方计算
#include <iostream>
using namespace std;
int main() {
int a,n,result=1;
cin>>a>>n;
for (int i=1;i<=n;++i) {
result*=a;
}
cout<<result;
return 0;
}
14 人口增长问题
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x;
int n;
cin>>x>>n;
for (int i=1;i<=n;i++) {
x=x+x*0.001;
}
cout<<fixed<<setprecision(4)<<x;
return 0;
}
15 银行利息
#include <iostream>
using std::cin;
using std::cout;
int main() {
int r,m,y;
double num;
cin>>r>>m>>y;
num=m;
for (int i=1;i<=y;++i) {
num*=1+r*0.01;
}
cout<<int(num);
return 0;
}
16 买房子
#include <iostream>
using namespace std;
int main() {
int n,k,p=2000000,money=0;
cin>>n>>k;
n*=10000;
for (int i=1;i<=20;++i) {
if (i!=1) p*=1+k*0.01;
money+=n;
if (money>=p) {
cout<<i;
return 0;
}
}
cout<<"Impossible";
return 0;
}
17 斐波那契数列
#include <iostream>
using namespace std;
int main() {
int k;
cin>>k;
int sum=0;
int a=1,b=1;
for (int i=1;i<=k;i++) {
if (i==1||i==2) {
sum=1;
continue;
}
sum=a+b;
a=b;
b=sum;
}
cout<<sum;
return 0;
}
18 鸡尾酒疗法
#include <iostream>
using namespace std;
int main() {
int n;
double a,b;
cin>>n;
cin>>a>>b;
n--;
for (int i=1;i<=n;++i) {
double c,d;
cin>>c>>d;
double x,y;
x=b/a;
y=d/c;
if (y-x>0.05) cout<<"better";
else if (x-y>0.05) cout<<"worse";
else cout<<"same";
cout<<endl;
}
return 0;
}
19 救援
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
double min=0;
cin>>n;
for (int i=1;i<=n;++i){
double x,y;
int s;
double length;
cin>>x>>y>>s;
length=sqrt(x*x+y*y);
min+=length/50+s*1+length/50+s*0.5;
}
cout<<ceil(min);
return 0;
}
20 球弹跳高度的计算
#include <iostream>
using namespace std;
int main() {
double h,length=0;
cin>>h;
for (int i=1;i<=10;++i) {
length+=h*1.5;
h/=2;
}
length-=h;
cout<<length<<endl<<h;
return 0;
}