XDOJ题目传送门
- P-0002
- P-0003
- P-0007
- P-0027
- P-0028
- P-0029
- P-0030
- P-0031
- P-0032
- P-0041
- P-0043
- P-0045
- P-0046
- P-0049
- P-0050
- P-0051
- P-0052
- P-0053
- P-0054
- P-0056
- P-0063
- P-0064
- P-0066
- P-0068
- P-0087
- P-0093
- P-0094
- P-0097
- P-0098
- P-0099
- P-0101
- P-0112
- P-0114&P-0116
- P-0146
- P-0147
- P-0149
- P-0150
- P-0151
- P-0155
- P-0156
- P-0157
- P-0161
- P-0177
- P-0183
- P-0185
- P-0189
- P-0196
- P-0249
- P-0298
- P-0299
- P-0300
- P-0301
- P-0302
- 最后
P-0002
#include<stdio.h>
int main(){
unsigned int n;
unsigned int count=0;
unsigned int a;
scanf("%d",&n);
int num[1000];
for(int i=0;i<n;i++){
scanf("%d",&a);
num[i]=a;
}
for(int j=0;j<n;j++){
if(num[j]!=num[j+1]){
count++;
}
}
printf("%d",count);
return 0;
}
P-0003
#include <stdio.h>
int main(){
int n,i,j,k,t,min;
scanf("%d",&n);
int a[1000],b[999];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
if(k!=i){
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0;i<n-1;i++){
b[i]=a[i+1]-a[i];
}
for(min=b[0],i=0;i<n-1;i++)
if(min>b[i])
min=b[i];
printf("%d",min);
return 0;
}
P-0007
#include<stdio.h>
int main(){
int day,fog,num;
int nums[10]={1,2,3,4,5,6,7,8,9,0};
scanf("%d%d%d",&day,&fog,&num);
if(day>=6||fog<200){//不限行的情况
printf("%d no",num%10);
}else if(day>0&&day<6&&fog>=200&&fog<400){//周一到周五且200-400的限行
if(num%10==nums[day-1]||num%10==nums[day+4]){//yes
printf("%d yes",num%10);
}else{
printf("%d no",num%10);//no
}
}else if(day>0&&day<6&&fog>=400&&fog<600){//周一到周五且大于400
//偶数周情况
if(day%2==0){//yes
if(num%10==0||num%10==2||num%10==4||num%10==6||num%10==8){
printf("%d yes",num%10);
}else{
printf("%d no",num%10);
}
}else{//奇数周情况
if(num%10==1||num%10==3||num%10==5||num%10==7||num%10==9){
printf("%d yes",num%10);//yes
}else{
printf("%d no",num%10);//no
}
}
}
return 0;
}
P-0027
#include<stdio.h>
int main(){
int es[3]={0,110,210};
double e;
scanf("%lf",&e);
if(e>=es[0]&&e<=es[1]){
//每度0.5元
printf("%.2lf",e/2);
}else if(e>es[1]&&e<=es[2]){
//超过部分0.55元
printf("%.2lf",55+(e-110)*0.55);
}else{
//每度电0.70元
printf("%.2lf",110+0.7*(e-210));
}
return 0;
P-0028
#include<stdio.h>
int main(){
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int a,b;
scanf("%d%d",&a,&b);
if(a%4==0&&a%100!=0||a%400==0){//闰年的二月
if(b==2){
printf("%d",days[b-1]+1);
}
}else{
printf("%d",days[b-1]);
}
return 0;
}
P-0029
#include<stdio.h>
int main(){
int n,sum=0;
scanf("%d",&n);
while(n!=0){
sum+=n%10;
n/=10;
}
printf("%d",sum);
return 0;
}
P-0030
#include<stdio.h>
int main(){
unsigned int a,b;
int sum=0;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++){
sum=i;
for(int j=1;j<i/2+1;j++){
if(i%j==0){
sum-=j;
}
}
if(sum==0){
printf("%d\n",i);
}
}
return 0;
}
P-0031
(前几行注释是迭代法,可以参考)
#include<stdio.h>
//int gcd(int a,int b){
// return(b?gcd(b,a%b):a);
//}
int main(){
int a,b;
scanf("%d%d",&a,&b);
int r;
while(a%b!=0){
r=a%b;
a=b;
b=r;
}
printf("%d",b);
return 0;
}
P-0032
#include<stdio.h>
int main(){
int n;
int count=0;
scanf("%d",&n);
while(n!=1){
if(n%2==0){
n/=2;
}else{
n=3*n+1;
}
count++;
}
printf("%d",count);
return 0;
}
P-0041
#include<stdio.h>
int main(){
int n;
int c1=0;
int c2=0;
int c3=0;
int c4=0;
int c5=0;
int c6=0;
int num[1000];
double sum=0;
int air[]={0,50,100,150,200,250,300};
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
sum+=num[i];
}
printf("%.2lf\n",sum/n);
for(int i=0;i<n;i++){
if(num[i]>=0&&num[i]<=50){
c1++;
}else if(num[i]>=51&&num[i]<=100){
c2++;
}else if(num[i]>=101&&num[i]<=150){
c3++;
}else if(num[i]>=151&&num[i]<=200){
c4++;
}else if(num[i]>=201&&num[i]<=300){
c5++;
}else if(num[i]>300){
c6++;
}
}
printf("%d %d %d %d %d %d",c1,c2,c3,c4,c5,c6);
return 0;
}
P-0043
#include <stdio.h>
int main(){
long a;
int c=0,max=0,min=9;
scanf("%ld",&a);
do{
int t = a%10;
if(t>max)max=t;
if(t<min)min=t;
a/=10;
c++;
}while(a>0);
printf("%d %d %d",c,max,min);
return 0;
}
P-0045
#include<stdio.h>
#include<math.h>//fabs()里面要浮点数
int main(){
int n,max;
scanf("%d",&n);
int t[30];
if(n>=2&&n<=30){
for(int i=0;i<n;i++){
scanf("%d",&t[i]);
}
max=fabs((double)t[0]-t[1]);//假设波动最大的是前俩项差
for(int i=0; i <n-1;i++){
if(fabs((double)t[i+1]-t[i])>max){
max=fabs((double)t[i + 1]-t[i]);
}
}
printf("%d",max);
}
return 0;
}
(要注意函数调用的参数的类型,不然有可能编译错误)
P-0046
#include<stdio.h>
void FindTurningPoint(int a[],int length){
int count=0;
for(int i=1;i<length-1;i++){//从第二个到倒数第二个
if((a[i]>a[i+1]&&a[i]>a[i-1])||(a[i]<a[i+1]&&a[i]<a[i-1])){
count++;
}
}
printf("%d",count);
}
int main(){
int n,count=0;
scanf("%d",&n);
int num[100];
if(n>=3&&n<=100){
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
FindTurningPoint(num,n);
}
return 0;
}
P-0049
#include<stdio.h>
#include<math.h>
int main(){
int a;
scanf("%d",&a);
if(sqrt((double)a)==(int)sqrt((double)a)){
printf("%d",(int)sqrt((double)a));
}else{
printf("no");
}
return 0;
}
(sqrt函数调用参数一定要是double,不然可能oj编译错误)
P-0050
#include<stdio.h>
int swap(int *a,int *b){//总共用到三处俩个变量互换,特此剔出声明
int t;
t=*a;
*a=*b;
*b=t;
return 0;
}
void DoubleSort(int a[],int length,int b[]){//排序魔改版,qq号和位数合一一映射
int i,j,t;
for (i=0;i<length-1;i++){
for (j=i+1;j<length;j++){
if (a[i]>a[j]){
swap(&a[i],&a[j]);
swap(&b[i],&b[j]);
}
}
}
}
int main(){
int n,t;
int qq[99];
int sum[99];
int qqcopy[99];
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&qq[i]);
}
for (int i=0;i<n;i++){
qqcopy[i]=qq[i];
sum[i]=0;
for (qq[i];qq[i]>=1;qq[i]/=10) {
sum[i]+=qq[i]%10;
}
}
DoubleSort(sum,n,qqcopy);
for(int i=0;i<n;i++){//合相等且qq号比较大
if(sum[i]==sum[i+1]&&qqcopy[i]>qqcopy[i+1]){
swap(&qqcopy[i],&qqcopy[i+1]);
}
}
printf("%d",qqcopy[n-1]);//最后一个肯定是最大的了
return 0;
}
P-0051
#include<stdio.h>
int main(){
int a,b,c,d,min,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
int num[4];
num[0]=a;
num[1]=b;
num[2]=c;
num[3]=d;
//Selection Sort
for(int i=0;i<3;i++){
for(int j=i+1,min=i;j<4;j++){
if(num[min]>num[j]){
min=j;
}
if(min!=i){
t=num[i];
num[i]=num[min];
num[min]=t;
}
}
}
printf("%d",num[3]);
return 0;
}
(如果你想时间更快,就不要像我这样用排序)
P-0052
#include<stdio.h>
int main(){
char c=getchar();
if(c>=97&&c<=122){//小a是97,z是122
putchar(c-32);
}else if(c>=65&&c<=90){//A 65 Z 90
putchar(c+32);
}else{
putchar(c);
}
return 0;
}
P-0053
#include<stdio.h>
int main(){
int m;
scanf("%d",&m);
if(m>=90){
putchar(65);
}else if(m>=80&&m<=89){
putchar(66);
}else if(m>=70&&m<=79){
putchar(67);
}else if(m>=60&&m<=69){
putchar(68);
}else{
putchar(69);
}
return 0;
}
P-0054
#include<stdio.h>
int main(){
int n,a,b,c;//1000-2000
scanf("%d",&n);
for(int i=1;i<1000;i++){//穷举1~1000的所有数,因为abc最多是三位数
//abc最多三位数,分别求i的个十百位
a=i%10;
b=(i/10)%10;
c=(i/100)%10;
if(i+a*100+b*10+c==n){
printf("%d %d %d\n",c,b,a);
}
}
return 0;
}
P-0056
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a*a+b*b==c*c){
printf("%d",a*b);
}else{
printf("no");
}
return 0;
}
P-0063
#include <stdio.h>
int main(){
int S,A,T;
float s;
scanf("%d",&S);
if(S<=3500){
s=0;
}else{
A=S-3500;
if(A<=1500){
s=0.03*A;
}else if(A>1500&&A<=4500){
s=1500*0.03+(A-1500)*0.1;
}else if(A>4500&&A<=9000){
s=1500*0.03+3000*0.1+0.2*(A-4500);
}else if(A>9000&&A<=35000){
s=1500*0.03+3000*0.1+0.2*4500+0.25*(A-9000);
}else{
s=1500*0.03+3000*0.1+0.2*4500+0.25*26000+0.3*(A-35000);
}
}
T=S-s;
printf("%d",T);
return 0;
}
P-0064
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=(n*n-n+1);i<=(n*n+n-1);i+=2){
printf("%d ",i);
}
return 0;
}
解释:
//给奇数排序的话,n^3等于n个奇数合
//可以证明最后一个奇数的序号就是n(n+1)/2
//第一个奇数的序号就是(n-1)n/2
//第一个奇数的值是n^2-n+1
//最后一个奇数的值是序号的两倍减去一 也就是n^2+n-1
P-0066
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
double sum=0;
int num[100];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
for(int i=0;i<n;i++){
sum+=num[i];
}
printf("%.2lf",sum/n);
return 0;
}
P-0068
#include<stdio.h>
int main(){
int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int y,d,t,sum=0,i=0;
scanf("%d%d",&y,&d);
if(y%400==0||(y%100!=0&&y%4==0)){
months[1] =29;
}
for(;i<12;i++){
sum+=months[i];
if(sum>=d){//d-(sum-months[i])先sum减去该索引的天数,得到前几个月天数之和,再用d减去就行
printf("%d %d",i+1,d-sum+months[i]);
break;
}
}
return 0;
}
P-0087
#include<stdio.h>
int main(){
int i,l,j;
int count;
int sum=0;
int num[1000];
for(i=0;i<1000;i++){
scanf("%d",&num[i]);
if(num[i]==0){
break;
}
}
for(i=0;i<1000;i++){
count=1;
if(num[i]==1){
sum+=1;
}
if(num[i]==2){
if(i==0||num[i-1]==1){
sum+=2;
}else{
for(j=i-1;j>=0;j--){
if(num[j]==2){
count+=1;
}else{
break;
}
}
sum+=2*count;
}
}
if(num[i]==0){
sum+=0;
break;
}
}
printf("%d",sum);
return 0;
}
P-0093
#include<stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d %d",a>b?(a%10):(b%10),a>b?(b*b):(a*a));
return 0;
}
P-0094
#include<stdio.h>
int main(){
int a[4];
int min,t,i,j;
for(int i=0;i<4;i++){
scanf("%d",&a[i]);
}
for(i=0;i<3;i++){//选择排序
for(j=i+1,min=i;j<4;j++){
if(a[j]<a[min]){
min=j;
}
}
if(min!=i){
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
for(int i=0;i<4;i++){
printf("%d ",a[i]);
}
return 0;
}
P-0097
#include<stdio.h>
int main(){
for(int i=97;i<=122;i++){
printf("%c ",i);
}
printf("\n");
for(int i=122;i>=97;i--){
printf("%c ",i);
}
return 0;
}
P-0098
#include<stdio.h>
int main(){
double m;
scanf("%lf",&m);
if(m>=90){
printf("%.2f %c",m,65);
}else if(m>=80&&m<=89){
printf("%.2f %c",m,66);
}else if(m>=70&&m<=79){
printf("%.2f %c",m,67);
}else if(m>=60&&m<=69){
printf("%.2f %c",m,68);
}else{
printf("%.2f %c",m,69);
}
return 0;
}
P-0099
#include<stdio.h>
int main(){
int es[3]={0,110,210};
double e;
scanf("%lf",&e);
if(e>=es[0]&&e<=es[1]){
//每度0.5元
printf("%.2lf %c %.2f",e/2,65,0.00);
}else if(e>es[1]&&e<=es[2]){
//超过部分0.55元
printf("%.2lf %c %.2f",55+(e-110)*0.55,66,e-110);
}else{
//每度电0.70元
printf("%.2lf %c %.2f",110+0.7*(e-210),67,e-210);
}
return 0;
}
P-0101
#include<stdio.h>
int main(){
char str[4];
for(int i=0;i<4;i++){
scanf("%c",&str[i]);
if(str[i]>=65&&str[i]<=90){//大写转小写
str[i]+=32;
}else if(str[i]>=97&&str[i]<=122){//小写转大写
str[i]-=32;
}else if(str[i]>=48&&str[i]<=57){//48-57是数字,转为*
str[i]='*';
}else{
str[i]='@';
}
printf("%c",str[i]);
}
return 0;
}
P-0112
#include<stdio.h>
#include<math.h>
int main(){
double x;
scanf("%lf",&x);
printf("%.2f",x>=0?sqrt(x):(pow(x+1,2)+2*x+1/x));
return 0;
}
P-0114&P-0116
#include<stdio.h>
int main(){
int es[3]={0,110,210};
double e;
scanf("%lf",&e);
if(e>=es[0]&&e<=es[1]){
//每度0.5元
printf("%.2lf",e/2);
}else if(e>es[1]&&e<=es[2]){
//超过部分0.55元
printf("%.2lf",55+(e-110)*0.55);
}else{
//每度电0.70元
printf("%.2lf",110+0.7*(e-210));
}
return 0;
}
P-0146
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
switch(n){
case 0:printf("zero");break;
case 1:printf("one");break;
case 2:printf("two");break;
case 3:printf("three");break;
case 4:printf("four");break;
case 5:printf("five");break;
case 6:printf("six");break;
case 7:printf("seven");break;
case 8:printf("eight");break;
case 9:printf("nine");break;
}
return 0;
}
P-0147
#include<stdio.h>
int main(){
int a,b;
int sum=0;
scanf("%d ",&a);
while(a!=0){
if(a%2!=0){
sum=sum+a;
}
scanf("%d ",&a);
}
printf("%d",sum);
return 0;
}
P-0149
#include<stdio.h>
int main(){
int n,flag=1;
double sum=0;
scanf("%d",&n);
for(double i=1;i<=n;i++){
sum=sum+flag*(i/(2*i-1));
flag*=-1;
}
printf("%.3f",sum);
return 0;
}
P-0150
#include<stdio.h>
int main(){
int x;
scanf("%d",&x);
if(x<1){
printf("%d",x);
}else if(x>=1&&x<10){
printf("%d",2*x-1);
}else{
printf("%d",3*x-11);
}
return 0;
}
P-0151
#include<stdio.h>
int main(){
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%lf",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(i<=100000) {
bonus=i*0.1;
} else if(i<=200000) {
bonus=bonus1+(i-100000)*0.075;
} else if(i<=400000) {
bonus=bonus2+(i-200000)*0.05;
} else if(i<=600000) {
bonus=bonus4+(i-400000)*0.03;
} else if(i<=1000000) {
bonus=bonus6+(i-600000)*0.015;
} else if(i>1000000) {
bonus=bonus10+(i-1000000)*0.01;
}
printf("%.2lf",bonus);
return 0;
}
P-0155
#include<stdio.h>
int main(){
unsigned int n;
int shit=1;
int peach=0;
scanf("%u",&n);
printf("%d ",n);
if(n>0&&n<=10){
for(int i=1;i<=n;i++){
shit*=i;
peach+=shit;
}
printf("%d ",shit);
printf("%d",peach);
}else if(n==0){
printf("%d %d",1,1);
}
return 0;
}
P-0156
#include<stdio.h>
int main(){
int count=0;
for(int i=100;i<=500;i++){
if(i%77!=0&&(i%7==0||i%11== 0)){
count++;
}
}
printf("%d",count);
return 0;
}
P-0157
#include<stdio.h>
int main(){
int n,i=1;
int sum=0;
scanf("%d",&n);
while(i<=n){
sum+=i;
i++;
}
printf("%d",sum);
return 0;
}
P-0161
#include<stdio.h>
int main(){
int n;
int c1=0,c2=0,c3=0,c4=0,c5=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
if(i%2!=0){
c1++;
}else if(i%2==0){
c2++;
}
if(i%3==0)c3++;
if(i%5==0)c4++;
if(i%7==0)c5++;
}
printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
return 0;
}
P-0177
#include<stdio.h>
#include<string.h>
int main(){
char str[101]={'\0'};
int sum=0;
gets(str);//scanf("%s",&str);scanf不行
//因为scanf不能输入空格,gets可以接收空格,估计是xdoj例子里面有一个输入了空格
for(int i=0;str[i]!='\0';i++){
sum+=(int)str[i];//算出十进制的合
}
//再转化为2进制,取后面一字节,也就是后八位
printf("%d",sum&255);
//(255二进制是1111 1111 只有后八位是1,& 运算后sum只保留了二进制的后八位,再用%d输出后变成了10进制)
return 0;
}
P-0183
#include<stdio.h>
int GreatCommonDivsior(int a,int b){
int r=a%b;
while(r!=0){
a=b;
b=r;
r=a%b;
}
return b;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
//最小公倍数=两数的乘积 除 最大公约数
printf("%d %d",GreatCommonDivsior(a,b),a*b/GreatCommonDivsior(a,b));
return 0;
}
P-0185
#include<stdio.h>
#include<math.h>
int main(){
double x1,x2,a,t;
scanf("%lf",&a);
x2=1;
do{
x1=x2;
x2=0.5*(x1+a/x1);
}while(fabs(x1-x2)>=1e-5);
printf("%.5lf",x2);
return 0;
}
P-0189
#include<stdio.h>
int main(){
double s=100,h=50;
int n;
scanf("%d",&n);
for(int i=1;i<n;i++){
s+=2*h;
h*=0.5;
}
printf("S=%.3lf h=%.3lf",s,h);
return 0;
}
P-0196
#include<stdio.h>
int main(){
int i,j,k;
char n;
scanf("%c",&n);
for(i=65;i<=n;i++){//大写A是65,n-i表示行数
for(j=n-i;j>0;j--){//空格的个数是递减的
printf(" ");
}
for(k=65;k<=i;k++){//从A开始正向输出 ABCDE...
printf("%c",k);
}
for(k=i-1;k>=65;k--){//从中间的字母开始反向输出 ...EDCBA
printf("%c",k);
}
printf("\n");//最外层结束一次,换一次行
}
return 0;
}
P-0249
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
int t=n;
for(i=2;i<=t/2;i++){//因数不超一半,1肯定是因数,直接跳过,从2始 从小到大找
//不用i<=n/2的原因是下面的操作会改变n的值
while(n%i==0){
printf("%d",i);
n/=i;//直接除以因数i
if(n!=1){
printf("*");//不是1表示 仍有因数,输出乘号
}
}
}
return 0;
}
P-0298
#include<stdio.h>
int main(){
int a,b,i,j,min,t;
scanf("%d%d",&a,&b);
int num[4]={
(a+b)*(a+b),(a-b)*(a-b),
a*a+b*b,a*a-b*b
};
for(i=0;i<3;i++){
for(j=i+1,min=i;j<4;j++){
if(num[min]>num[j]){
min=j;
}
}
if(min!=i){
t=num[min];
num[min]=num[i];
num[i]=t;
}
}
printf("%d %d",num[3],num[0]);
return 0;
}
P-0299
#include <stdio.h>
#include <math.h>
int main(){
int p,c;
int t;
scanf("%d",&p);
t=(p-1)/1e5;
switch(t){
case 0:
c=p*0.1;
break;
case 1:
c=(p-1e5)*0.075+1e5*0.1;
break;
case 2:
case 3:
c=(p-2e5)*0.05+1e5*0.1+1e5*0.075;
break;
case 4:
case 5:
c=(p-4e5)*0.03+1e5*0.1+1e5*0.075+2e5*0.05;
break;
case 6:
case 7:
case 8:
case 9:
c=(p-6e5)*0.015+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03;
break;
default:
c=(p-1e6)*0.01+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03+4e5*0.015;
}
printf("%d\n",c);
return 0;
}
P-0300
#include<stdio.h>
int main(){
int n;
int count=0;
scanf("%d",&n);
if(n!=0){
while(n<=999999999&&n>0){
n/=10;
count++;
}
printf("%d",count);
}else{//没0的情况会只有75分
printf("%d",1);
}
return 0;
}
P-0301
#include<stdio.h>
void Sum(int a,int anum[]){
int count=1;
int sum=1;
for(int i=2;i<=a/2;i++){
if(a%i==0){
sum+=i;
count++;
}
}
anum[0]=sum;
anum[1]=count;
}
int main(){
int a,b;
int anum[2];
int bnum[2];
scanf("%d%d",&a,&b);
Sum(a,anum);
Sum(b,bnum);
if(a==bnum[0]&&b==anum[0]){
printf("yes %d %d",anum[1],bnum[1]);
}else{
printf("no %d %d",anum[1],bnum[1]);
}
return 0;
}
P-0302
#include<stdio.h>
#include<math.h>
int isPrimenum(int j){//判断j是不是素数
int flag=1;
for(int i=2;i<=sqrt((double)j);i++){//sqrt函数的参数要是实数
if(j%i==0){
flag=0;
break;
}
}
if(flag){
return flag;
}
return 0;
}
void ProducePrimeNums(int prnums[],int p){
int i=0;
for(int j=2;i<p+10;j++){//判断j是不是素数
if(isPrimenum(j)){
prnums[i++]=j;
}
}
}
int main(){
int prnums[150];//素数数组
int p,sum=0;
scanf("%d",&p);
ProducePrimeNums(prnums,p);//找出p+10个素数,并存到数组里
for(int i=p-1;i<p+10;i++){
sum+=prnums[i];
}
printf("%d",sum);
return 0;
}
最后
感兴趣的可以关注我的微信公众号,第一时间收到动态