zoukankan      html  css  js  c++  java
  • POJ 入门题

    poj1552 Doubles

    题目链接: http://poj.org/problem?id=1552

    描述:给出2~15个数字,得到这组数字之后,找出有多少组数字有2倍关系,比如1 4 3 2 9 7 18 22,1和2,2和4.9和18都有2倍关系,所以是3 ,直接暴力即可

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
        int a[100],i=0,ans=0;;
        while(1){
            int x;
            cin>>x;
            if(x==-1)
                break;
            else if(x==0){
            for(int j=0;j<i;j++)
                for(int k=j+1;k<i;k++)
                   if(a[k]==2*a[j]||a[j]==2*a[k])
                      ans++;
            cout<<ans<<endl;
                i=0;
                ans=0;
            }
            else a[i++]=x;
        }
    }

    poj1004 Financial Management

    题目链接:http://poj.org/problem?id=1004

    题意:Larry毕业之后挣钱了想知道他的财务状况,他现在有他的存款清单,想知道他12个月的结余有多少

    思路:依次读入12个月的金额,输出平均值就好,记得要加一个$

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
        float a[15],sum=0;
        for(int i=0;i<12;i++){
            cin>>a[i];
            sum+=a[i];
        }
        sum/=12;
        printf("$%.2f\n",sum);
    }

    poj2521 How much did the businessman lose

    题目链接:http://poj.org/problem?id=2521

    题意:商人做生意有亏有赚,如果有个给了假币,商人会亏损:货物价格+找钱价格,

    注意:N<M,P也有可能小于M,因为买东西的不全是假币,如果赚了,就输出负数。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
    int n,m,p,c;
    while((cin>>n>>m>>p>>c)&&(m||n||p||c))
        cout<<p-m+n<<endl;
    }

    poj 2209 The King

    题目链接: http://poj.org/problem?id=2209

    题意:有个聪明的国王,他有个缺点,就是数不到3。现在敌军压境,他想要把自己的儿子派出去。他知道他的有些儿子像他一样聪明,有些却愚昧无知。而且他清楚的知道,他儿子们的脑力潜能,从-3到3之间的一个值(因为他只能数到3),他也知道他们取胜的机会和儿子们脑力潜能的幂之和和成比例。现在想要知道最后的战力之和。

    由于有了幂指数的存在,当为偶数时,负数能变成正数。当为奇数时,负数就不要加上去。

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
        int n,m,sum=0;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            int x;
            cin>>x;
            if(x<0&&m%2==1)
                ;
            else sum+=pow(x,m);
        }
        cout<<sum<<endl;
    }

    poj3086 Triangular Sums

    题目链接: http://poj.org/problem?id=3086

    题意:三角数$T(n)=1+2+...+n$.这个三角形的权重是$W(n) = SUM[k = 1…n; k * T(k + 1)]$

    输入n,求W(n),直接暴力即可

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        int a[1005]={0},b[1005]={0};
        for(int i=1;i<=1004;i++)
            a[i]=a[i-1]+i;
        for(int i=1;i<=1003;i++)
            b[i]=b[i-1]+i*a[i+1];
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            int m;
            cin>>m;
            cout<<i<<" "<<m<<" "<<b[m]<<endl;
        }
    }
    

    poj2656 Unhappy Jinjin

    题目链接: http://poj.org/problem?id=2656

    题意:Jinjin是个中学生,除了每天的课业外,还需要应付妈妈给她的课外作业。如果她每天学习超过8个小时,那么她就不开心,如果不开心的话,那她继续学习就会越来越不开心。你现在需要判断她是否不开心以及哪天最不开心。

    #include <stdio.h>
    int main(){
    	while(1) {
    		int i, n;
    		int maxday, maxvalue = -1;
    		scanf("%d", &n);
    		if (n == 0) break;
    		for (i = 1; i <= n; i++) {
    			int a, b;
    			scanf("%d%d", &a, &b);
    			if (a + b > maxvalue) {
    				maxvalue = a + b;
    				maxday = i;
    			}
    		}
    		if (maxvalue <= 8) 
    			printf("0\n");
    		else printf("%d\n", maxday);
    	}
    	return 0;
    }

    poj2840 Big Clock

    题目链接: http://poj.org/problem?id=2840

    题意:大钟坏了,大家修好了,但是还是报时有问题,1点的时候敲13下,2点的时候敲14下,12点的时候敲24下,13点的时候敲1下,想知道现在该敲几下

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
        int n;
        cin>>n;
        while(n--){
            int x,y;
            cin>>x;
            getchar();
            cin>>y;
            if(y!=0){
                cout<<0<<endl;
                continue;
            }
            if(x>=0&&x<=12)
                cout<<x+12<<endl;
            else cout<<x-12<<endl;
        }
    }

    poj3673 Cow Multiplication

    题目链接: http://poj.org/problem?id=3673

    题意:定义了一个新的乘法方式: $12345 =14 + 15 + 24 + 25 + 34 + 3*5 = 54$

    思路:循环求出每一位数即可

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main(){
        int a,b,i=0,j=0,ans=0;
        int x[15],y[15];
        cin>>a>>b;
        while(a>0){
            x[i++]=a%10;
            a=a/10;
        }
        while(b>0){
            y[j++]=b%10;
            b=b/10;
        }
        for(int k=0;k<i;k++)
            for(int l=0;l<j;l++)
              ans+=x[k]*y[l];
        cout<<ans<<endl;
    }

    poj 2871 A Simple Question of Chemistry

    题目链接: http://poj.org/problem?id=2871

    题意:输入一系列温度,输出2个温度之间的差别

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        float a[1000];
        int i=0;
        while(scanf("%f",&a[i])&&a[i]<900){
               scanf("%f",&a[++i]);
               i++;
    
        }
        for(int j=1;j<i;j++)
            printf("%.2f\n",a[j]-a[j-1]);
            printf("End of Output\n");
    }

    poj1005 I Think I Need a Houseboat

    题目链接: http://poj.org/problem?id=1005

    题意:Fred Mapper有个半岛,每天以50 平方公里的速度被侵蚀,他想知道他的地多长时间会被侵蚀。直接用面积除下就好

    #include<cstdio>
    #include<iostream>
    #define pi 3.1415926
    using namespace std;
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            double a,b;
            cin>>a>>b;
            b=a*a+b*b;
            b=b*pi/2;
            b=b/50.0;
            cout<<"Property "<<i<<": This property will begin eroding in year "<<int(b)+1<<"."<<endl;
        }
        cout<<"END OF OUTPUT."<<endl;
    }

    poj 3916 Duplicate Removal

    题目链接:http://poj.org/problem?id=3916

    题意:一串数字,把中间连续相同的重复项去掉,只保留一个副本

    思路:对比上一个数字,如果一样的话就不输出即可

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        int n,a[1000],b[1000];
        while((cin>>n)&&n!=0){
            a[0]=0;
            int k=0;
            for(int i=1;i<=n;i++){
                cin>>a[i];
                if(a[i]==a[i-1])
                    ;
                else b[k++]=a[i];
            }
            for(int i=0;i<k;i++)
                cout<<b[i]<<" ";
            cout<<"$"<<endl;
    
        }
    }
    

    poj2390 Bank Interest

    题目链接: http://poj.org/problem?id=2390

    题意:输入年利率、金额、年份,输出复利之后能拿到的金额数

    注意输出整数计算时中间部分取小数,用double

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int main(){
        int a,b,c;
        cin>>a>>b>>c;
        double s=b*1.0;
        for(int i=1;i<=c;i++)
        s=s*(1+0.01*a);
        cout<<(int)s<<endl;
        }
        <cstdio>
        #include<algorithm>
        #include<iostream>
        using namespace std;
        int main(){
        int a,b,c;
        cin>>a>>b>>c;
        double s=b*1.0;
        for(int i=1;i<=c;i++)
        s=s*(1+0.01*a);
        cout<<(int)s<<endl;
    }

    poj2509 Peter's smokes

    题目链接: http://poj.org/problem?id=2509

    题意:peter共有n根烟,还可以凭k根烟头换个新的烟,他最多可以抽多少根烟

    思路:不断循环,当n<k时,退出,注意用减法会超时

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        int n,k;
        while((scanf("%d%d",&n,&k)!=EOF)){
             int   s=n;
                while(n>=k){
                s+=n/k;
                n=n%k+n/k;
                }
            cout<<s<<endl;
        }
    }

    poj1528 Perfection

    题目链接: http://poj.org/problem?id=1528

    题意:数字的因子之和等于该数字本身的,就是perfect numbers,比如$28=1+2+4+7+14$,$9>1+3 $就是deficient,$12<1+2+3+4+6$,就是abundant,判断数n是哪类数

    直接暴力判断因子,注意输出,尤其是右对齐,用5d%

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        int n;
        bool f=true;
        while((cin>>n)&&n!=0){
            if(f)
            {
                cout<<"PERFECTION OUTPUT"<<endl;
                f=0;
            }
            int sum=n;
            for(int i=1;i<n;i++){
                if(n%i==0)
                    sum=sum-i;
            }
            if(sum==0)
                printf("%5d  PERFECT\n",n);
            else if(sum>0) printf("%5d  DEFICIENT\n",n);
            else printf("%5d  ABUNDANT\n",n);
        }
        cout<<"END OF OUTPUT"<<endl;
    }
    

    poj3980取模运算

    题目链接: http://poj.org/problem?id=3980

    易知:a%b=a-a/b*b;

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
        int a,b;
        while((scanf("%d%d",&a,&b)!=EOF)){
              printf("%d\n",a-a/b*b);
              }
    }

    poj 2388Who's in the Middle

    题目链接: http://poj.org/problem?id=2388

    题意:给n个数,求中位数

    思路:排序,输出排序后中间的就好,注意排序的始末位置

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
        int a[10005];
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>a[i];
        sort(a,a+n);
        cout<<a[n/2]<<endl;
    }
    

      

     

     

     

  • 相关阅读:
    MongoDB简单使用
    mongodb安装部署
    分布式通信-序列化
    分布式通信协议
    分布式概念
    springboot-事件
    spring-事件
    spring-@Component/@ComponentScan注解
    springboot-Date日期时间问题
    enginx:基于openresty,一个前后端统一,生态共享的webstack实现
  • 原文地址:https://www.cnblogs.com/dlutjwh/p/10988075.html
Copyright © 2011-2022 走看看