九度oj 专题整理(模拟部分4)

1070请参见模拟1部分

题目1068:球的半径和体积

double类型表示的范围比float和long long大,所以我多用double,注意PI定义

#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define PI acos(-1)
using namespace std;
 
int main()
{
    double x0,y0,z0,x1,y1,z1;
    while(~scanf("%lf %lf %lf %lf %lf %lf",&x0,&y0,&z0,&x1,&y1,&z1))
    {
        double r=sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)+(z1-z0)*(z1-z0));
        double area=4.0*PI*((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)+(z1-z0)*(z1-z0))*r/3.0;
        printf("%.3lf %.3lf\n",r,area);
    }
    return 0;
}


题目1067:n的阶乘


#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>  
   
int main()  
{  
    int n,i;  
    while(scanf("%d",&n) != EOF)  
    {  
        double count = 1;  
        for(i = 1;i <= n;i++){  
            count *= i;  
        }  
        printf("%.0lf\n",count);  
    }  
    return 0;  
}  

题目1065:输出梯形

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
#define LL long long
using namespace std;
 
int main()
{
    int h;
    while(~scanf("%d",&h))
    {
        for(int i=0; i<h; i++)
        {
            for(int j=0; j<2*h-2*(i+1); j++)
            {
                printf(" ");
            }
            for(int k=0; k<h+2*i; k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}

题目1064:反序数

#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    for(int i=1000;i<1111;i++)
    {
        int j=i;
        int m=0;
        while(j)
        {
                m=m*10+j%10;
                j/=10;
        }
        if(m==i*9)
        {
                printf("%d\n",i);
        }
    }
}

1063:略

1062:注意求导不要求错,在NYOJ上练过这道题目,求导求错了= =

简单看了前面的题目,越来越水,也没有写的必要了,就把之前A过的历史放到这里吧,也算是有始有终= =

1060,竟为输入方式不明wa的原因,也是略坑,注意冒号与数字之间的空格= =

#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define PI acos(-1)
using namespace std;
int main(){
    int mark[66];
    int cnt=0,ct=0;
    memset(mark,0,sizeof(mark));
    for(int i=2; i<=60; i++)
    {
        int num=sqrt(i);
        int sum=0;
        for(int j=2; j<=num; j++)
        {
            if(i%j==0)
            {
                sum+=j;
                if(i!=j*j)
                {
                    sum+=i/j;
                }
            }
        }
        sum+=1;
        //printf("%d %d\n",i,sum);
        if(sum==i)
        {
            mark[i]=1;
            cnt++;
        }
        else if(sum>i)
        {
            mark[i]=2;
            ct++;
        }
    }
    printf("E: ");
    for(int i=2; i<=60; i++)
    {
        if(mark[i]==1&&cnt>1)
        {
            printf("%d ",i);
            cnt--;
        }
        else if(mark[i]==1&&cnt==1)
        {
            printf("%d\n",i);
            break;
        }
    }
    printf("G: ");
    for(int i=2; i<=60; i++)
    {
        if(mark[i]==2&&ct>1)
        {
            printf("%d ",i);
            ct--;
        }
        else if(mark[i]==2&&ct==1)
        {
            printf("%d\n",i);
            break;
        }
    }
    return 0;
}

1059,暴力循环
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<set>
#include<map>
#define LL long long
#define PI acos(-1)
#define exp 1e-9
#define INF 0x7fffffff
 
using namespace std;
 
int main()
{
    //int a,b,c;
    for(int i=0; i<=9; i++)
    {
        for(int j=0; j<=9; j++)
        {
            for(int k=0; k<=9; k++)
            {
                int ans,cnt;
                ans=i*100+j*10+k;
                cnt=j*100+k*10+k;
                if(ans+cnt==532)
                    printf("%d %d %d\n",i,j,k);
            }
        }
    }
    return 0;
 }
 
1050:略

1048:排序,比较平方和与第三边平方大小

1045:化分数为整数,很多地方用到这个思路,避免不必要的精度损失

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<set>
#include<map>
#define LL long long
#define PI acos(-1)
#define exp 1e-9
#define INF 0x7fffffff
 
using namespace std;
 
int main()
{
    int n,x,y,z;
    while(~scanf("%d",&n))
    {
        for(int i=0; i<=100; i++)
        {
            for(int j=0; j<=100-i; j++)
            {
                int k=100-i-j;
                int ans=3*5*i+3*3*j+k;
                if(ans<=n*3)
                    printf("x=%d,y=%d,z=%d\n",i,j,k);
            }
        }
    }
    return 0;
 }

1014:多级排序的水题,说到排序我一直念念不忘并列排名的那个题目,对我来说,还是不够熟悉的,之后会补上

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<set>
#include<map>
#define LL long long
#define PI acos(-1)
#define exp 1e-9
#define INF 0x7fffffff
using namespace std;
priority_queue <int, vector<int>, greater<int> > Q;
struct node
{
    char id[25];
    int score;
};
bool cmp(node a, node b)
{
    if(a.score!=b.score)
        return a.score>b.score;
    else
    {
        int tmp=strcmp(a.id,b.id);
        return tmp<0;
    }
}
int main()
{
    int n,M,G,m,num;
 
    while(~scanf("%d",&n)&&n)
    {
        scanf("%d %d",&M,&G);
        node student[1010];
        for(int i=0; i<=1010; i++)
            student[i].score=0;//memset(student[i].id,'\0',sizeof(student[i].id));
        int list[15];
        memset(list,0,sizeof(list));
        for(int i=1; i<=M; i++)
            scanf("%d",&list[i]);
        for(int i=0; i<n; i++)
        {
            scanf("%s",student[i].id);
            scanf("%d",&m);
            for(int j=0; j<m; j++)
            {
                scanf("%d",&num);
                //printf("%d\n",list[num]);
                student[i].score+=list[num];
            }
        }
        sort(student,student+n,cmp);
        int ans=0;
        for(int i=0; i<n; i++)
        {
            //printf("%d\n",student[i].score);
            if(student[i].score>=G)
                ans++;
                //printf("%s %d\n",student[i].id,student[i].score);
        }
        printf("%d\n",ans);
         for(int i=0; i<n; i++)
        {
            if(student[i].score>=G)
                //ans++;
                printf("%s %d\n",student[i].id,student[i].score);
        }
    }
 
    return 0;
}

1013:算出到达和离开时间,进行排序

其他太水了,除1038没有读题之外,模拟部分该整理的已经结束,右手用鼠标用的已废= =,都是水题,于是乎,体力劳动吧= =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值