Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

和我比慢 1000MS 过。哈哈哈哈。证明数据只到900000 没有1000000 呵呵。

Posted by chenjin1st at 2012-03-02 15:49:35 on Problem 2262
第一次使用C++写ACM 感觉好爽。但是 代码就写的很对不起观众了
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
using namespace std;
class Pint{
public :
	int *init,j;
	int judge(int n){
		int i,j,flag=1;
		j=sqrt((double)n);
		for(i=2;i<=j;i++)
			if(n%i==0){
				flag=0;
				break;
		}
		return flag;
	}
	int Binary(int init[],int n,int key){
		int i,right,mid,left;
		right=n-1;left=0;
		while(left<=right){
			mid=(right+left)/2;
			if(init[mid]==key){
				return mid;
			}else{
				if(init[mid]<key)
					left=mid+1;
				else
					right=mid-1;
			}
		}
	return -1;
	}
	Pint(){
		int i,n;
		init=(int *)malloc(900000*sizeof(int));
		for(i=3,n=0;i<900000;i++)
		if(judge(i))
			init[n++]=i;
		init=(int *)realloc(init,n*sizeof(int));
		j=n;
	}
	~Pint(){}
};
int main(){
	int i,j,flag,a,b,t;
	Pint Pn;
	while(scanf("%d",&t)&&t){
		for(i=0;t>Pn.init[i];i++){
			a=Pn.init[i];
			b=t-a;
			flag=Pn.Binary(Pn.init,Pn.j,b);
			if(flag!=-1){
				printf("%d = %d + %d\n",t,a,b);
				break;
			}
		}
	}
	return 0;
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator