您的位置:首页 > 其它

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

2017-09-11 20:27 197 查看
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<std
4000
lib.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没有读题之外,模拟部分该整理的已经结束,右手用鼠标用的已废= =,都是水题,于是乎,体力劳动吧= =
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: