zoukankan      html  css  js  c++  java
  • loj 1109

    一道题想了老半天,结果还是TLE了

    TLE:

    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    using namespace std;
    int compare(const void*a,const void*b)
    {
    return *(int*)a-*(int*)b;
    }
    int main()
    {
    int t,n,i,a[1001],b[1001];
    int j;
    cin>>t;
    int T=1;
    while(t--)
    {
    cin>>n;
    memset(a,0,sizeof(a));
    //memset(b,0,sizeof(b));
    for(i=1;i<=1000;i++)
    {
    for(j=1;j<=i;j++)
    {
    if(i%j==0)a[i]++;//a[i]用来看记录i有a[i]个除数;
    }
    b[i]=a[i];//保存未排序前的a[i]的数据;
    }
    qsort(a+1,1000,sizeof(int ),compare);
    cout<<"Case "<<T++<<": ";
    int l=1;
    int k=a[n];//记录a[n]的除数个数是k;
    for(i=n-1;i>=1;i--)
    {
    if(a[i]==k)l++;
    else break;
    }//用来计算这个a[n]是k中的第l个;
    for(i=1000;i>=1;i--)
    {
    if(b[i]==k)
    {
    l--;
    if(l==0)break;
    }
    }//用来求出这个第l个所对应的原始数据;
    cout<<i<<endl;
    }
    return 0;
    }

    最终在楼长的指导下,了解了结构体二级排序,AC了

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;

    struct num
    {
    int x;
    int y;
    }s[1004];
    int cmp(num a,num b)
    {

    if(a.x==b.x)
    return a.y>b.y;
    else
    return a.x<b.x;
    }
    int main()
    {
    int T,t=1;
    cin>>T;
    while(T--)
    {
    int n;
    cin>>n;
    for(int i=1;i<=1000;i++)
    {
    s[i].x=0;
    int m=sqrt(i);
    for(int j=1;j<=m;j++)//节省了不少时间;
    {
    if(i%j==0)
    {
    s[i].x++;
    if(i!=j*j)s[i].x++;
    }
    }
    s[i].y=i;
    }
    sort(s+1,s+1001,cmp);
    cout<<"Case "<<t++<<": "<<s[n].y<<endl;
    }
    return 0;
    }

  • 相关阅读:
    [Swoole系列入门教程 5] UDP协议和demo
    [Swoole系列入门教程 3] 心跳检测
    [Swoole系列入门教程 1] CentOs 上的Swoole安装
    PHP CURL 异步测试
    layui 表格点击图片放大
    Laravel 指定日志生成目录
    联系我
    npm config set registry 与 cnpm的区别
    qq邮箱html邮件,图片不显示的问题
    qq邮箱问卷,测试不支持form表单
  • 原文地址:https://www.cnblogs.com/wally/p/wally.html
Copyright © 2011-2022 走看看