九度oj 專題整理(模擬部分4)
阿新 • • 發佈:2018-12-04
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; }
#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沒有讀題之外,模擬部分該整理的已經結束,右手用滑鼠用的已廢= =,都是水題,於是乎,體力勞動吧= =