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

题意模糊不清!

Posted by KatrineYang at 2016-08-31 23:53:01 on Problem 1365
输入中是质数和指数一起显示的!比如509,1,59,1表示509^1*59^1,而不是7^509*5^1*3^59*2^1!
(要是后者这题该怎么做啊2333)
附代妈
#include <iostream>
#include <stdio.h>
#include <sstream>
#include <string>
using namespace std;

int primes[10000];

int primeCnt;

bool isPrime(int n){
	for(int i = 1; i < primeCnt; i++){
		if(primes[i]*primes[i]>n) break;
		if(n%primes[i] == 0) return 0;
	}
	return 1;
}
void init(){
	primes[0] = 2;
	primeCnt = 1;
	for(int i = 3; i <= 32767; i+=2){
		if(isPrime(i)){
			primes[primeCnt] = i;
			primeCnt++;
		}
	}
}

int main() {
	init();
	string s;
	while(1){
		getline(cin, s);
		if(s[0] == '0') break;
		stringstream ss(s);
		int n = 1;
		int p, a;
		while(ss >> p){
			ss >> a;
			for(int j = 0; j < a; j++) n *= p;
		}
		n--;
		int fjgs = 0;
		int ps[50], ms[50];
		for(int i = 0; i < primeCnt; i++){
			if(primes[i]*primes[i] > n) break;
			int pss=primes[i], mss=0;
			while(n%pss==0){
				n/=pss;
				mss++;
			}
			if(mss>0){
				ps[fjgs]=pss;
				ms[fjgs]=mss;
				fjgs++;
			}
		}
		if(n>1){
			ps[fjgs]=n;
			ms[fjgs]=1;
			fjgs++;
		}
		for(int j = fjgs-1; j>=0; j--){
			printf("%d %d ", ps[j], ms[j]);
		}
		printf("\n");
	}
	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