【技术向】USACO training训练题解【1】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_27318881/article/details/53668994

第一章完结

Greedy Gift Givers

/*
ID: tominute
PROG: gift1
LANG: C++               
*/
#include 
#include 
#include 


using namespace std;


int main() {
    ofstream fout ("gift1.out");
    FILE *fp;
    fp=fopen("gift1.in","r");
    int n,a,b;
    fscanf(fp,"%d",&n);
    char name[10][20];
    char buf[10][20];
    char kk[20];
    int gift[10][2];
    int money[10]={0};
    for(int i=0;i
#include 
#include 


using namespace std;


int main() {
    ofstream fout ("gift1.out");
    FILE *fp;
    fp=fopen("gift1.in","r");
    int n,a,b;
    fscanf(fp,"%d",&n);
    char name[10][20];
    char buf[10][20];
    char kk[20];
    int gift[10][2];
    int money[10]={0};
    for(int i=0;i

Friday the Thirteenth

/*
ID: tominute
PROG: friday
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;

int main() {
    ofstream fout ("friday.out");
	FILE *fp;
	fp=fopen("friday.in","r");
    int n,j,k,i,day=3;
    fscanf(fp,"%d",&n);
	fclose(fp);
	int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int week[7]={0};
	for(i=0;i
#include 
#include 

using namespace std;

int main() {
    ofstream fout ("friday.out");
	FILE *fp;
	fp=fopen("friday.in","r");
    int n,j,k,i,day=3;
    fscanf(fp,"%d",&n);
	fclose(fp);
	int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int week[7]={0};
	for(i=0;i

Broken Necklace

/*
ID: tominute
PROG: beads
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;

int main() {
    ofstream fout ("beads.out");
	FILE *fp;
	fp=fopen("beads.in","r");
    int n,k,i;
	int r_max=0,l_max=0,rmax=0,lmax=0,sum=0;
	char beads[360],bead[360];
    fscanf(fp,"%d",&n);
	fscanf(fp,"%s",beads);
	fclose(fp);
	for(i=0;i=rmax)rmax=r_max;
		r_max=0;
		strcpy(bead,beads);
		k=i-1;
		if(k==-1)k=n-1;
		switch(bead[i]){
			case 'b':
				if(bead[k]=='w')bead[k]='r';
				while(bead[k]=='r'){
					k--;l_max++;
					if(k==-1)k=n-1;
					if(bead[k]=='w')bead[k]='r';
				}break;
			case 'r':
				if(bead[k]=='w')bead[k]='b';
				while(bead[k]=='b'){
					k--;l_max++;
					if(k==-1)k=n-1;
					if(bead[k]=='w')bead[k]='b';
				}break;
			default :break;
		}
		lmax=l_max;
		l_max=0;
		if((lmax+rmax)>=sum)sum=lmax+rmax;
		if(sum>n)sum=n;
		lmax=0;rmax=0;
	}
	if(sum==0)sum=n;
	fout<
#include 
#include 

using namespace std;

int main() {
    ofstream fout ("beads.out");
	FILE *fp;
	fp=fopen("beads.in","r");
    int n,k,i;
	int r_max=0,l_max=0,rmax=0,lmax=0,sum=0;
	char beads[360],bead[360];
    fscanf(fp,"%d",&n);
	fscanf(fp,"%s",beads);
	fclose(fp);
	for(i=0;i=rmax)rmax=r_max;
		r_max=0;
		strcpy(bead,beads);
		k=i-1;
		if(k==-1)k=n-1;
		switch(bead[i]){
			case 'b':
				if(bead[k]=='w')bead[k]='r';
				while(bead[k]=='r'){
					k--;l_max++;
					if(k==-1)k=n-1;
					if(bead[k]=='w')bead[k]='r';
				}break;
			case 'r':
				if(bead[k]=='w')bead[k]='b';
				while(bead[k]=='b'){
					k--;l_max++;
					if(k==-1)k=n-1;
					if(bead[k]=='w')bead[k]='b';
				}break;
			default :break;
		}
		lmax=l_max;
		l_max=0;
		if((lmax+rmax)>=sum)sum=lmax+rmax;
		if(sum>n)sum=n;
		lmax=0;rmax=0;
	}
	if(sum==0)sum=n;
	fout<

Milking Cows

/* ID: tominute PROG: milk2 LANG: C++ */ #include #include #include using namespace std; int time1[1000000]={0}; int main() { ofstream fout ("milk2.out"); FILE *fp; fp=fopen("milk2.in","r"); int n,k,i,milk=0,nomilk=1,max=0,min=10000; int max_milk=0,max_nomilk=0; fscanf(fp,"%d",&n); int start[5000],end[5000]; for(i=0;imax)max=end[i]; if(start[i]

Transformations

/* ID: tominute PROG: transform LANG: C++ */ #include #include #include #include using namespace std; void ro90(char raw[50][50],int n){ char temp[50][50]; for(int i=0;i

Name That Number

/* ID: tominute PROG: namenum LANG: C++ */ #include #include #include using namespace std; int main() { FILE *fp,*dict,*fout; int i,n,k=0,state=0; char t[20],d[20]; int num[20]; int para[20]={0}; char test[20]={'\0'}; char phone[8][4]={"ABC","DEF","GHI","JKL","MNO","PRS","TUV","XYZ"}; fp=fopen("namenum.in","r"); fout=fopen("namenum.out","w"); fscanf(fp,"%s",t); fclose(fp); n=strlen(t) ; for(i=0;i=0){ for(i=0;i=0;k--){ para[k]++; if(para[k]==3){ para[k]=0; } else break; } } k=0; } if(state==0) fprintf(fout,"NONE\n"); fclose(fout); //cout<

Palindromic Squares

/*
ID: tominute
PROG: palsquare
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;
int coun=0;
void conv(int base,int num,char out[20]){
	char outnum[20];
	int yu;
	if(num==0){
		coun=1;
		out[0]=0;
	}
	else{
		for(int i=0;num!=0;i++){
			yu=num%base;
			num=num/base;
			if(yu<10)
				outnum[i]=yu+48;
			else
				outnum[i]=yu+55;	
			coun++;
		}
		for(int i=0;i
#include 
#include 

using namespace std;
int coun=0;
void conv(int base,int num,char out[20]){
	char outnum[20];
	int yu;
	if(num==0){
		coun=1;
		out[0]=0;
	}
	else{
		for(int i=0;num!=0;i++){
			yu=num%base;
			num=num/base;
			if(yu<10)
				outnum[i]=yu+48;
			else
				outnum[i]=yu+55;	
			coun++;
		}
		for(int i=0;i

Dual Palindromes

/*
ID: tominute
PROG: dualpal
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;
int coun=0;
void conv(int base,int num,char out[33]){
	char outnum[33];
	int yu;
	if(num==0){
		coun=1;
		out[0]=0;
	}
	else{
		for(int i=0;num!=0;i++){
			yu=num%base;
			num=num/base;
			if(yu<10)
				outnum[i]=yu+48;
			else
				outnum[i]=yu+55;	
			coun++;
		}
		for(int i=0;i=2){
			geshu++;
			fprintf(fout,"%d\n",i);
		}
		k=0;
	}
	fclose(fout);
	getchar();
    return 0;
}
#include 
#include 

using namespace std;
int coun=0;
void conv(int base,int num,char out[33]){
	char outnum[33];
	int yu;
	if(num==0){
		coun=1;
		out[0]=0;
	}
	else{
		for(int i=0;num!=0;i++){
			yu=num%base;
			num=num/base;
			if(yu<10)
				outnum[i]=yu+48;
			else
				outnum[i]=yu+55;	
			coun++;
		}
		for(int i=0;i=2){
			geshu++;
			fprintf(fout,"%d\n",i);
		}
		k=0;
	}
	fclose(fout);
	getchar();
    return 0;
}

Mixing Milk

/*
ID: tominute
PROG: milk
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;
long int farmer[5000][2];
int main() {
	FILE *fp,*fout;
	int i=0,j,m;
	long int n,temp,count=0,total=0;
	fp=fopen("milk.in","r");
	fout=fopen("milk.out","w");
    fscanf(fp,"%d %d",&n,&m);
	for(i=0;in){
			farmer[i][1]=n-count+farmer[i][1];
			break;
		}
	}
	for(j=0;j<=i;j++){
		total=total+farmer[j][0]*farmer[j][1];
	}
	//cout<
#include 
#include 

using namespace std;
long int farmer[5000][2];
int main() {
	FILE *fp,*fout;
	int i=0,j,m;
	long int n,temp,count=0,total=0;
	fp=fopen("milk.in","r");
	fout=fopen("milk.out","w");
    fscanf(fp,"%d %d",&n,&m);
	for(i=0;in){
			farmer[i][1]=n-count+farmer[i][1];
			break;
		}
	}
	for(j=0;j<=i;j++){
		total=total+farmer[j][0]*farmer[j][1];
	}
	//cout<

Barn Repair

/*
ID: tominute
PROG: barn1
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;
void test(int *flag,int p,int q,int *START,int *END){
	int start,end,len=0;
	for(int j=p;j<=q;j++){
		if(flag[j-1]==1){
			start=j;
			j++;
			while((flag[j-1]==0)&&(j<=q)){
				j++;
			}
			end=j;
			j=start;
			if(len<=end-start-1){
				*END=end;
				*START=start;
				len=end-start-1;
			}
		}
	}
}
int main() {
	FILE *fp,*fout;
	int i=0,j,m,s,c,total=0,END,START,count=0,temp;
	int stall[200],mem[50][2];
	int flag1[200]={0};
	int outflag[200]={1};
	fp=fopen("barn1.in","r");
	fout=fopen("barn1.out","w");
    fscanf(fp,"%d %d %d",&m,&s,&c);
	for(i=0;istall[j]){
				temp=stall[i];
				stall[i]=stall[j];
				stall[j]=temp;
			}
		}
	}
	for(i=0;i
#include 
#include 

using namespace std;
void test(int *flag,int p,int q,int *START,int *END){
	int start,end,len=0;
	for(int j=p;j<=q;j++){
		if(flag[j-1]==1){
			start=j;
			j++;
			while((flag[j-1]==0)&&(j<=q)){
				j++;
			}
			end=j;
			j=start;
			if(len<=end-start-1){
				*END=end;
				*START=start;
				len=end-start-1;
			}
		}
	}
}
int main() {
	FILE *fp,*fout;
	int i=0,j,m,s,c,total=0,END,START,count=0,temp;
	int stall[200],mem[50][2];
	int flag1[200]={0};
	int outflag[200]={1};
	fp=fopen("barn1.in","r");
	fout=fopen("barn1.out","w");
    fscanf(fp,"%d %d %d",&m,&s,&c);
	for(i=0;istall[j]){
				temp=stall[i];
				stall[i]=stall[j];
				stall[j]=temp;
			}
		}
	}
	for(i=0;i

Prime Cryptarithm

/*
ID: tominute
PROG: crypt1
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;
int prime[10];
int test(int *test,int digit,int num){//1 false;0 ture
	int flag=0;
	for(int k=0;k=0){
		for(j=0;j<3;j++){
			mul[j]=prime[index[j]];
		}
		if(mul[2]!=0){
			for(j=0;j=1)continue;//test the leading digit
				flag=test(temp1,n,3);
				if(flag>=1)continue;//test the first partial mul
				//cout<=1||(prime[k]==0)))continue;//test the leading digit
					flag=test(temp2,n,3);
					if(flag>=1)continue;//test the second partial mul
					out[0]=temp1[0];
					out[1]=(temp1[1]+temp2[0])%10;
					flag=(temp1[1]+temp2[0])/10;
					out[2]=(temp1[2]+temp2[1]+flag)%10;
					flag=(temp1[2]+temp2[1]+flag)/10;
					out[3]=(temp2[2]+flag)%10;
					flag=(temp2[2]+flag)/10;
					if(flag>=1)continue;//test the leading digit
					flag=test(out,n,4);
					if(flag>=1)continue;//test final mul
					count++;
				}
			}
		}
		for(i=2;i>=0;i--){
			index[i]++;
			if(index[i]==n){
				index[i]=0;
			}
			else break;
		}
	}
	fprintf(fout,"%d\n",count);
	//cout<
#include 
#include 

using namespace std;
int prime[10];
int test(int *test,int digit,int num){//1 false;0 ture
	int flag=0;
	for(int k=0;k=0){
		for(j=0;j<3;j++){
			mul[j]=prime[index[j]];
		}
		if(mul[2]!=0){
			for(j=0;j=1)continue;//test the leading digit
				flag=test(temp1,n,3);
				if(flag>=1)continue;//test the first partial mul
				//cout<=1||(prime[k]==0)))continue;//test the leading digit
					flag=test(temp2,n,3);
					if(flag>=1)continue;//test the second partial mul
					out[0]=temp1[0];
					out[1]=(temp1[1]+temp2[0])%10;
					flag=(temp1[1]+temp2[0])/10;
					out[2]=(temp1[2]+temp2[1]+flag)%10;
					flag=(temp1[2]+temp2[1]+flag)/10;
					out[3]=(temp2[2]+flag)%10;
					flag=(temp2[2]+flag)/10;
					if(flag>=1)continue;//test the leading digit
					flag=test(out,n,4);
					if(flag>=1)continue;//test final mul
					count++;
				}
			}
		}
		for(i=2;i>=0;i--){
			index[i]++;
			if(index[i]==n){
				index[i]=0;
			}
			else break;
		}
	}
	fprintf(fout,"%d\n",count);
	//cout<

Combination Lock

/*
ID: tominute
PROG: combo
LANG: C++               
*/
#include 
#include 
#include 

using namespace std;

int main() {
	FILE *fp,*fout;
	int i=0,n,count=0,secret1[3],secret2[3],j,flag,up;
	int sec1[3][5],sec2[3][5],out[300][3]={0},index[3]={0},temp[3];
	fp=fopen("combo.in","r");
	fout=fopen("combo.out","w");
    fscanf(fp,"%d",&n);
	fscanf(fp,"%d %d %d",&secret1 [0],&secret1 [1],&secret1 [2]);
	fscanf(fp,"%d %d %d",&secret2 [0],&secret2 [1],&secret2 [2]);
	fclose(fp);
	if(n<=5)up=n;
	else up=5;
	for(i=0;i<3;i++){
		for(j=0;j=0){
		for(j=0;j<3;j++){
			out[count][j]=sec1[j][index[j]];
		}
		count++;
		for(i=2;i>=0;i--){
			++index[i];
			if(index[i]==up)
				index[i]=0;
			else break;
		}
	}
	i=0;
	while(i>=0){
		for(j=0;j<3;j++){
			temp[j]=sec2[j][index[j]];
		}
		for(j=0;j=0;i--){
			++index[i];
			if(index[i]==up)
				index[i]=0;
			else break;
		}
	}
	fprintf(fout,"%d\n",count);
	fclose(fout);
    return 0;
}
#include 
#include 

using namespace std;

int main() {
	FILE *fp,*fout;
	int i=0,n,count=0,secret1[3],secret2[3],j,flag,up;
	int sec1[3][5],sec2[3][5],out[300][3]={0},index[3]={0},temp[3];
	fp=fopen("combo.in","r");
	fout=fopen("combo.out","w");
    fscanf(fp,"%d",&n);
	fscanf(fp,"%d %d %d",&secret1 [0],&secret1 [1],&secret1 [2]);
	fscanf(fp,"%d %d %d",&secret2 [0],&secret2 [1],&secret2 [2]);
	fclose(fp);
	if(n<=5)up=n;
	else up=5;
	for(i=0;i<3;i++){
		for(j=0;j=0){
		for(j=0;j<3;j++){
			out[count][j]=sec1[j][index[j]];
		}
		count++;
		for(i=2;i>=0;i--){
			++index[i];
			if(index[i]==up)
				index[i]=0;
			else break;
		}
	}
	i=0;
	while(i>=0){
		for(j=0;j<3;j++){
			temp[j]=sec2[j][index[j]];
		}
		for(j=0;j=0;i--){
			++index[i];
			if(index[i]==up)
				index[i]=0;
			else break;
		}
	}
	fprintf(fout,"%d\n",count);
	fclose(fout);
    return 0;
}

Wormholes

/* ID: tominute PROG: wormhole LANG: C++ */ #include #include #include using namespace std; long all[11000][24]={0},pos[12][2]={0}; int total,flag=0,flag2=0,coun=0; int getnum(int n){ n--; if(n<=0)return 1; else return getnum(n-1)*n; } void getpair1(long pos[12][2],int n,long all[][24],int row=0,int tot=0){ int k=tot/(n-1),j; long temp[12][2]; for(int i=0;i=1)&&(flag<2)){ getpair1(pos,n-2,all,row,k); } for(int m=0;m<12;m++){ pos[m][0]=temp[m][0]; pos[m][1]=temp[m][1]; } flag=0; coun--; row=row+k; } } int retest(int nn,int n,long x,long y,long tempx,long tempy){ long tpx=1999999999,tpy=0; int i=0,flag=0,j=0,flag2=0,jj=0; for(j=0;jall[nn][2*j]){tpx=all[nn][2*j];tpy=all[nn][2*j+1];jj=j;} flag2=1; } } if(flag2==1){tempx=tpx;tempy=tpy;} if(flag2==0)return 0; flag2=0; if(jj%2==0)flag=1; else flag=-1; tempx=all[nn][2*(jj+flag)]; tempy=all[nn][2*(jj+flag)+1]; if((tempx==x)&&(tempy==y))return 1; else return retest(nn,n,x,y,tempx,tempy); } int main() { FILE *fp,*fout; int i=0,n,sum=0,flag=0; long pair[6][4]; fp=fopen("wormhole.in","r"); fout=fopen("wormhole.out","w"); fscanf(fp,"%d",&n); for(i=0;i

Ski Course Design

/* ID: tominute PROG: skidesign LANG: C++ */ #include #include #include using namespace std; int main(void) { int N,i,temp,diff,flag,sum=0; long out=999999999; int height[1000]={0}; ifstream fin("skidesign.in"); fin >> N; for(i=0;i>height[i]; fin.close(); for(i=1;i<=83;i++){ sum=0; for(int j=0;j(i+17))sum+=(height[j]-i-17)*(height[j]-i-17); } if(sum

Arithmetic Progressions

/* ID: tominute PROG: ariprog LANG: C++ */ #include #include #include #include using namespace std; int square(int test,int M){ int i,j,upp=sqrt(test),diff,iii,difff; if(M=iii;i--){ diff=test-i*i; if(diff==0)return 1; difff=sqrt(diff); if(difff*difff==diff)return 1; } return 0; } int main(void) { int N,i,M,a,b,test,sum=0,m,flag=0,k,n,aa; ifstream fin("ariprog.in"); fin >> N>>M; m=M; M=2*M*M; k=M/(N-1); fin.close(); ofstream fout("ariprog.out"); if(((m+N)<20)||(N<15)){ for(b=1;b<=k;b++){ aa=M-(N-1)*b; for(a=0;a<=aa;a++){ for(i=0;i

Mother's Milk

/* ID: tominute PROG: milk3 LANG: C++ */ #include #include #include #include #include using namespace std; int main(void) { int a,b,c,left[21]={0},a1,b1,c1,flag,count=0,out[21]={0},r; ifstream fin("milk3.in"); FILE *fout; fout=fopen("milk3.out","w"); fin >>a>>b>>c; fin.close(); c1=c;a1=0;b1=0;left[c1]=1; for(int i=0;i<5000000;i++){ r=rand()%6; switch(r){ case 0:if(c1>(a-a1)){c1=c1-(a-a1);a1=a;}//c->a else{a1+=c1;c1=0;} if(a1==0)left[c1]=1; if(a1>(b-b1)){a1=a1-(b-b1);b1=b;}//a->b else{b1+=a1;a1=0;}break; case 1:if(c1>(b-b1)){c1=c1-(b-b1);b1=b;}//c->b else{b1+=c1;c1=0;} if(a1==0)left[c1]=1; if(b1>(a-a1)){b1=b1-(a-a1);a1=a;}//b->a else{a1+=b1;b1=0;}break; case 2: if(a1>(c-c1)){a1=a1-(c-c1);a1=a;}//a->c else{c1+=a1;a1=0;} if(a1==0)left[c1]=1;break; case 3:if(b1>(c-c1)){b1=b1-(c-c1);b1=b;}//b->c else{c1+=b1;b1=0;} if(a1==0)left[c1]=1;break; case 4: if(a1>(b-b1)){a1=a1-(b-b1);b1=b;}//a->b else{b1+=a1;a1=0;}break; case 5:if(b1>(a-a1)){b1=b1-(a-a1);a1=a;}//b->a else{a1+=b1;b1=0;}break; } } for(int i=0;i<21;i++){ if(left[i]==1){out[count]=i;count++;} } for(int i=0;i<(count-1);i++){ fprintf(fout,"%d ",out[i]); } fprintf(fout,"%d\n",out[count-1]); fclose(fout); //cout<<"end"<

Number Triangles

/*
ID: tominute
PROG: numtri
LANG: C++               
*/
#include 
#include 
#include 
#include 
#include 

using namespace std;
long temp[1010]={0};
long numtri[1010][1010]={0};
int main(void)
{
	int n,i,k=1;
	ifstream fin("numtri.in");
	FILE *fout;
	fin >>n;
	for(i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			fin>>numtri[i][j];
		}
	}
	fin.close();
	/*for(i=1;i<=n;i++){
		for(int j=0;j=0;j--){
			if(temp[j]>=temp[j-1])temp[j]+=numtri[i][j];
			else temp[j]=temp[j-1]+numtri[i][j];
		}
	}
	for(i=1;i<=n;i++){
		if(temp[i]>temp[0])temp[0]=temp[i];
	}
	fout=fopen("numtri.out","w");
	fprintf(fout,"%ld\n",temp[0]);
	fclose(fout);
	//getchar();
	return 0;
}

#include 
#include 
#include 
#include 

using namespace std;
long temp[1010]={0};
long numtri[1010][1010]={0};
int main(void)
{
	int n,i,k=1;
	ifstream fin("numtri.in");
	FILE *fout;
	fin >>n;
	for(i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			fin>>numtri[i][j];
		}
	}
	fin.close();
	/*for(i=1;i<=n;i++){
		for(int j=0;j=0;j--){
			if(temp[j]>=temp[j-1])temp[j]+=numtri[i][j];
			else temp[j]=temp[j-1]+numtri[i][j];
		}
	}
	for(i=1;i<=n;i++){
		if(temp[i]>temp[0])temp[0]=temp[i];
	}
	fout=fopen("numtri.out","w");
	fprintf(fout,"%ld\n",temp[0]);
	fclose(fout);
	//getchar();
	return 0;
}

Prime Palindromes

/*
ID: tominute
PROG: pprime
LANG: C++               
*/
#include 
#include 
#include 
#include 


using namespace std;
int num(long a){
	int count=0;
	while(a>=1){
		a=a/10;
		count++;
	}
	return count;
}
int zhishu(long test){
	//long k=test/2;
	long kk=sqrt(test);
	for(long i=3;i<=kk;i+=2)
		if(test%i==0)return 1;
	return 0;
}
int main(void)
{
	int na,nb,i,k=0,index[2][10],ind[8]={5,10,10,10,10,10,10,10},dex[8]={0};
	long test,a,b;
	for(i=0;i<=9;i++)
		index[1][i]=i;
	for(i=0;i<=4;i++)
		index[0][i]=2*i+1;
	ifstream fin("pprime.in");
	FILE *fout;
	fin >>a>>b;
	fin.close();
	na=num(a);
	nb=num(b);
	fout=fopen("pprime.out","w");
	for(i=na;i<=nb;i++){
		for(int j=0;j<8;j++)dex[j]=0;k=0;
		while(k>=0){
			if(i%2==0){
				test=index[0][dex[0]];
				for(int j=2;j<=i/2;j++)
				test+=pow(10,j-1)*index[1][dex[j-1]];
				for(int j=i/2+1;j<=i-1;j++)
				test+=pow(10,j-1)*index[1][dex[i-j]];
				test+=pow(10,i-1)*index[0][dex[0]];
			}
			if(i%2==1){
				test=index[0][dex[0]];
				if(i>=5){for(int j=2;j<=i/2;j++)
					test+=pow(10,j-1)*index[1][dex[j-1]];}
				if(i!=1)test+=pow(10,i/2)*index[1][dex[i/2]];
				if(i>=5){for(int j=i/2+2;j<=i-1;j++)
					test+=pow(10,j-1)*index[1][dex[i-j]];}
				if(i!=1)test+=pow(10,i-1)*index[0][dex[0]];
			}
			if(zhishu(test)==0){
				if(i==na){if((test>=a)&&(test<=b))fprintf(fout,"%ld\n",test);}
				if((i==nb)&&(na!=nb)){if(test<=b)fprintf(fout,"%ld\n",test);}
				if((i!=na)&&(i!=nb))fprintf(fout,"%ld\n",test);
			}
			for(k=(i+1)/2-1;k>=0;k--){
				dex[k]++;
				if(dex[k]==ind[k])dex[k]=0;
				else break;
			}
		}
	}
	//cout<
#include 
#include 
#include 


using namespace std;
int num(long a){
	int count=0;
	while(a>=1){
		a=a/10;
		count++;
	}
	return count;
}
int zhishu(long test){
	//long k=test/2;
	long kk=sqrt(test);
	for(long i=3;i<=kk;i+=2)
		if(test%i==0)return 1;
	return 0;
}
int main(void)
{
	int na,nb,i,k=0,index[2][10],ind[8]={5,10,10,10,10,10,10,10},dex[8]={0};
	long test,a,b;
	for(i=0;i<=9;i++)
		index[1][i]=i;
	for(i=0;i<=4;i++)
		index[0][i]=2*i+1;
	ifstream fin("pprime.in");
	FILE *fout;
	fin >>a>>b;
	fin.close();
	na=num(a);
	nb=num(b);
	fout=fopen("pprime.out","w");
	for(i=na;i<=nb;i++){
		for(int j=0;j<8;j++)dex[j]=0;k=0;
		while(k>=0){
			if(i%2==0){
				test=index[0][dex[0]];
				for(int j=2;j<=i/2;j++)
				test+=pow(10,j-1)*index[1][dex[j-1]];
				for(int j=i/2+1;j<=i-1;j++)
				test+=pow(10,j-1)*index[1][dex[i-j]];
				test+=pow(10,i-1)*index[0][dex[0]];
			}
			if(i%2==1){
				test=index[0][dex[0]];
				if(i>=5){for(int j=2;j<=i/2;j++)
					test+=pow(10,j-1)*index[1][dex[j-1]];}
				if(i!=1)test+=pow(10,i/2)*index[1][dex[i/2]];
				if(i>=5){for(int j=i/2+2;j<=i-1;j++)
					test+=pow(10,j-1)*index[1][dex[i-j]];}
				if(i!=1)test+=pow(10,i-1)*index[0][dex[0]];
			}
			if(zhishu(test)==0){
				if(i==na){if((test>=a)&&(test<=b))fprintf(fout,"%ld\n",test);}
				if((i==nb)&&(na!=nb)){if(test<=b)fprintf(fout,"%ld\n",test);}
				if((i!=na)&&(i!=nb))fprintf(fout,"%ld\n",test);
			}
			for(k=(i+1)/2-1;k>=0;k--){
				dex[k]++;
				if(dex[k]==ind[k])dex[k]=0;
				else break;
			}
		}
	}
	//cout<

Superprime Rib

/*
ID: tominute
PROG: sprime
LANG: C++               
*/
#include 
#include 
#include 
#include 

using namespace std;

int zhishu(long test){
	//long k=test/2;
	long kk=sqrt(test);
	for(long i=3;i<=kk;i+=2)
		if(test%i==0)return 1;
	return 0;
}
int main(void)
{
	int n,i,num1[4]={2,3,5,7},num2[5]={1,3,5,7,9},k=0,index[8]={0},index_max[8]={4,5,5,5,5,5,5,5},flag;
	long test;
	ifstream fin("sprime.in");
	FILE *fout;
	fin >>n;
	fin.close();
	fout=fopen("sprime.out","w");
	while(k>=0){
		test=num1[index[0]];
		flag=0;
		for(i=1;i=0;k--){
			index[k]++;
			if(index[k]==index_max[k])index[k]=0;
			else break;
		}
	}
	fclose(fout);
	//getchar();
	return 0;
}

#include 
#include 
#include 

using namespace std;

int zhishu(long test){
	//long k=test/2;
	long kk=sqrt(test);
	for(long i=3;i<=kk;i+=2)
		if(test%i==0)return 1;
	return 0;
}
int main(void)
{
	int n,i,num1[4]={2,3,5,7},num2[5]={1,3,5,7,9},k=0,index[8]={0},index_max[8]={4,5,5,5,5,5,5,5},flag;
	long test;
	ifstream fin("sprime.in");
	FILE *fout;
	fin >>n;
	fin.close();
	fout=fopen("sprime.out","w");
	while(k>=0){
		test=num1[index[0]];
		flag=0;
		for(i=1;i=0;k--){
			index[k]++;
			if(index[k]==index_max[k])index[k]=0;
			else break;
		}
	}
	fclose(fout);
	//getchar();
	return 0;
}



 

猜你喜欢

转载自blog.csdn.net/sinat_27318881/article/details/53668994