
网上找的能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
本文探讨并改进了原始代码实现,通过优化算法提高了效率。重点在于代码优化、算法应用与性能提升。
5817

被折叠的 条评论
为什么被折叠?



