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

暴力啊!0ms???这数据是有多弱?

Posted by KatrineYang at 2016-09-11 12:44:06 on Problem 1305
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;

bool hs(int a, int b){
	if(a == 0){
		return b==1;
	}
	if(b == 0){
		return a==1;
	}
	if(a > b) return hs(b, a%b);
	return hs(a, b%a);
}

bool has[1000005];

int main() {
	int N;
	while(scanf("%d", &N) > 0){
		if(N == -1) break;
		for(int i = 1; i <= N; i++) has[i] = 0;
		int smax = (int)sqrt(N-1.0);
		int gs, sy;
		gs = 0;
		sy = N;
		for(int s = 2; s <= smax; s++){
			int tmax = s-1;
			int t_ = (int)sqrt(N-s*s-0.0);
			if(t_ < tmax) tmax = t_;
			for(int t = 1; t <= tmax; t++){
				if((s-t)%2==0 || !hs(s,t)) continue;
				//cout << s <<" " << t << endl;
				gs++;
				int gou = s*s-t*t, gu = 2*s*t, f = s*s+t*t;
				int mxC = N/f;
				for(int j = 1; j <= mxC; j++){
					if(!has[gou*j]){
						sy--;
						has[gou*j] = 1;
					}
					if(!has[gu*j]){
						sy--;
						has[gu*j] = 1;
					}
					if(!has[f*j]){
						sy--;
						has[f*j] = 1;
					}
				}
			}
		}
		printf("%d %d\n", gs, sy);
	}
	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