HDU 2574

简介: //我发现,sqrt用c++提交会CE #include #include #include using namespace std; int Prim( int n) { int i=2,cnt=0; while(n>0&&n>=i)//防止发生除0...
//我发现,sqrt用c++提交会CE 
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int Prim( int n) 
{ 
    int i=2,cnt=0;
    while(n>0&&n>=i)//防止发生除0错误,因为可能素数还不够50 
    {
        if(n%i==0)
        {
            cnt++;
            while(n%i==0)
      //不会死循环因为n最终为1,则跳出内部while               
n/=i; } i++; } return cnt; } int main() { int i,j,k,T; cin>>T; char name[21]; int number; while(T--) { char str[] = "ZZZZZZZZZZZZZZZZZZZZZ"; int count = 0; int num,cnt=0; cin>>num; for(i=0;i<num;i++) { cin>>name; cin>>number; cnt = Prim(number); if(cnt>count||cnt==count&&strcmp(name,str)<0) { count = cnt; strcpy(str,name); } } cout<<str<<endl; } return 0; } //wa, #include <iostream> #include <string> #include <cstring> #include <malloc.h> #include <cstdlib> #include <cmath> using namespace std; typedef struct INFO { char str[21]; int number; int cnt;//质因子个数 }INFO; int Prim( int n) { int i=2,cnt=0; while(n>0&&n>=i)//防止发生除0错误,因为可能素数还不够50 { if(n%i==0) { cnt++; while(n%i==0) n/=i; } i++; } return cnt; } /*这样的cmp会wa ,因为前者大于后者时,会倒过来 int cmp(const void *a,const void *b) { if(((INFO *)a)->cnt!=((INFO *)b)->cnt) return (*(INFO *)a).cnt<(*(INFO *)b).cnt; else return strcmp(((INFO *)a)->str,((INFO *)b)->str); } */ //这样的cmp也会wa int cmp(const void *a,const void *b) { if(((INFO *)a)->cnt<((INFO *)b)->cnt) return (*(INFO *)a).cnt<(*(INFO *)b).cnt; else if(((INFO *)a)->cnt>((INFO *)b)->cnt) return 0; else return strcmp(((INFO *)a)->str,((INFO *)b)->str); } int main() { int i,j,k,T; cin>>T; while(T--) { int num; cin>>num; //原来只申请了一个节点,总提示 内存不可写,这么低级的错误 INFO *info = (INFO *)malloc(sizeof(INFO)*(num+3)); for(i=0;i<num;i++) { cin>>info[i].str; cin>>info[i].number; } for(i=0;i<num;i++) { info[i].cnt = Prim(info[i].number); //cout<<info[i].cnt<<endl; } qsort(info,num,sizeof(INFO),cmp); cout<<info[1].str<<endl; } return 0; }

 

目录
相关文章
|
Java
hdu 2503 a/b + c/d
hdu 2503 a/b + c/d
47 0
|
Java BI
HDU 2034 人见人爱A-B
人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 77157    Accepted Submission(s): 21509 Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。
1163 0
|
机器学习/深度学习
|
人工智能
HDU1106
为了给学弟学妹讲课,我又水了一题…… 1: import java.util.*; 2: import java.io.*; 3: 4: public class HDU1106 5: { 6: public static void main...
880 0