Openjudge 1.5 循环控制

1.5.4

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
    int n;
    int hih[10001];
    int sum;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
    	scanf("%d",&hih[i]);
    	sum+=hih[i];
	}
	float avera;
	avera=float(sum)/float(n);
	printf("%d %.5f",sum,avera);
	return 0;}

1.5.6

#include <bits/stdc++.h>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;}

1.5.9

对于奇偶,偶偶,奇奇开头的所有情况要全部包含

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    int k,l;
    k=0;
    //cout<<m<<"/"<<n<<"/"<<k<<"/"<<sum<<"/"<<endl;
    for(int i=m;i<=n;i++){
    	if(i%2!=0){
    		k+=i;
		}
    //	cout<<i<<"/"<<m<<"/"<<sum<<endl; 
	} 
	cout<<k<<endl;
	return 0;}

1.5.15

http://noi.openjudge.cn/ch0105/15/

15:银行利息

农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为(R)(0到20之间的整数)。约翰现有总值为(M)的钱(100到1,000,000之间的整数)。他清楚地知道自己要投资(Y)年(范围0到400)。请帮助他计算最终他会有多少钱,并输出它的整数部分。数据保证输出结果在32位有符号整数范围内。

输入

一行包含三个整数(R,M,Y),相邻两个整数之间用单个空格隔开。

输出

一个整数,即约翰最终拥有多少钱(整数部分)。

样例输入

5 5000 4

样例输出

6077

(WA)(9分)

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
    double r,m,y,r1;
    scanf("%lf%lf%lf",&r,&m,&y);
    double res;
    res=m;
    r1=1+r*0.01;
    for(int i=0;i<y;i++){
    	res*=r1;
	}
	
	printf("%.0lf",fabs(res-0.5));
	return 0;}

1.5.16

http://noi.openjudge.cn/ch0105/16/

某程序员开始工作,年薪(N)万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之(K)增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子?(第一年年薪N万,房价200万)

输入

一行,包含两个正整数N((10 leq N leq 50)), K((1 leq K leq 20)),中间用单个空格隔开。

输出

如果在第20年或者之前就能买下这套房子,则输出一个整数(M),表示最早需要在第(M)年能买下,否则输出(Impossible)

样例输入

50 10

样例输出

8

WA(7分)

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    int N,K;
    scanf("%d%d",&N,&K);
    int totalm=0,totalfj=200;
    for(int i=1;i<20;i++){
    	totalm+=N;
    	if(i==1) totalfj*=1;
    	if(i!=1) totalfj*=(1+K*0.01);
    	if(totalm>=totalfj) {
    		printf("%d",i);
    		return 0;
		}
	}
	printf("Impossible");
	return 0;
}

1.5.21

21:角谷猜想

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。

程序要求输入一个整数,将经过处理得到1的过程输出来。

输入

一个正整数N((N leq 2,000,000))

输出

从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"(End)"。如果输入为1,直接输出"(End)"。

http://noi.openjudge.cn/ch0105/21/

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main( ){
	long long k;
	scanf("%d",&k);
	long long ke=k;(用int时Output limit exceeded)(用long long时WA9分)
	while(ke!=1){
		if(ke%2==0){
			printf("%d/2=%d
",ke,ke/2);
			ke=ke/2;
		}
		else if(ke%2!=0){
			printf("%d*3+1=%d
",ke,ke*3+1);
			ke=ke*3+1;
		}
	}
	printf("End");
	return 0;} 

1.5.21

22:津津的储蓄计划

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上(20%)还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

输入

包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

输出

包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出(-X)(X)表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

#include <bits/stdc++.h>
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;
        }else{
            cout<<"-"<<i+1;
            flag=false;
            break;
        }
    }
    if(flag)
        cout<<store+store*0.2+money%300;
    return 0;}

1.5.25

25:求特殊自然数

一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。

输入

无。

输出

三行:

第一行是此自然数的十进制表示;
第二行是此自然数的七进制表示;
第三行是此自然数的九进制表示。

#include <bits/stdc++.h>
using namespace std;
int get7(int num){
    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){
    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){
    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++)
    {
        if(get7(i)==getBack(get9(i)))
            cout<<i<<endl<<get7(i)<<endl<<get9(i);
    }
    return 0;}


1.5.28

反向输出三位数(1到100000000之间)

#include <bits/stdc++.h>
using namespace std;
int main(){
    int num;
    cin>>num;
    while(num>=10)
    {
        cout<<num%10<<" ";
        num=num/10;
    }
    cout<<num;
    return 0;}
要做就做南波万
原文地址:https://www.cnblogs.com/liuziwen0224/p/11991573.html