網上找的能AC的代碼:
#include<stdio.h> #include<string.h> #include<math.h> int prime[1000000] = {0}; int main() { int T,i,j,n,num,max,k; char name[100],s[100]; prime[0]=prime[1]=1; for(i = 2; i <1000; i++) for(j = i * i; j <1000000; j+= i) prime[j] = 1; scanf("%d",&T); while(T--) { max=-1; scanf("%d",&n); while(n--) { k=0; scanf("%s%d",name,&num); for(i=2;i<=num;++i) { if(prime[i]) continue; if(num%i==0) { ++k; num/=i; } } if(max<k) { max=k; strcpy(s,name); } else if(max&&max==k) { if(strcmp(s,name)>0) strcpy(s,name); } } printf("%s\n",s); } return 0; }
liuzhushiqiangTLE的代碼:
//模板開始#include <string> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <fstream> #include <map> #include <set> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime>#include<iomanip>#define SZ(x) (int(x.size()))using namespace std;int toInt(string s){ istringstream sin(s); int t; sin>>t; return t;}template<class T> string toString(T x){ ostringstream sout; sout<<x; return sout.str();}typedef long long int64;int64 toInt64(string s){ istringstream sin(s); int64 t; sin>>t; return t;}template<class T> T gcd(T a, T b){ if(a<0) return gcd(-a, b); if(b<0) return gcd(a, -b); return (b == 0)? a : gcd(b, a % b);}//模板結束(通用部分)bool is_prime(int a){ int temp = sqrt((double)(a)); bool flag = true; if(a < 2){ flag = false; return flag; } for(int i = 2; i <= temp; i++){ if (a % i == 0){ flag = false; return flag; } } return flag;}int count_prime(int a){ int count = 0; for(int i = 0; i < a; i++){ if(is_prime(i)){ if(a % i){ count++; } } } return count;}int main(){ int m, n; int grade; string name; int max_prime; string max_name; bool flags[1000000]; for(int k = 0; k < 1000000; k++){ flags[k] = is_prime(k); } cin>>m; for(int i = 0; i < m; i++){ cin>>n; cin>>name>>grade; max_prime = count_prime(grade); max_name = name; int temp; for(int j = 1; j < n; j++){ cin>>name>>grade; temp = count_prime(grade); if(temp > max_prime){ max_prime = temp; max_name = name; }else if(temp == max_prime){ if(max_name > name){ max_name = name; } } } cout<<max_name<<endl; } return 0;}
轉載自:http://www.cnblogs.com/dongsheng/archive/2012/08/13/2636920.html