• 【ACM-ICPC 2018 沈阳赛区网络预赛 K】Supreme Number


    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    显然每个数字只可能是1,3,5,7 然后如果3,5,7这些数字出现两次以上。显然两个3||5||7都能被11整除。 然后1的话最多能出现两次。 那么也就是说最多只可能有5位数字。 把小于等于5位的全都枚举一遍。求出合法的就好。 如果n>=5位就直接输出那个最大的就Ok.

    【代码】

    #include <bits/stdc++.h>
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define all(x) x.begin(),x.end()
    #define pb push_back
    #define lson l,mid,rt<<1
    #define ri(x) scanf("%d",&x)
    #define rl(x) scanf("%lld",&x)
    #define rs(x) scanf("%s",x)
    #define rson mid+1,r,rt<<1|1
    using namespace std;
    
    const double pi = acos(-1);
    const int dx[4] = {0,0,1,-1};
    const int dy[4] = {1,-1,0,0};
    int ans[]= {2,3,5,7,11,13,17,23,31,37,53,71,73,113,131,137,173,311,317};
    string s;
    int kk = 1;
    
    int main()
    {
        int t;
        scanf("%d",&t);
    
        while(t--)
        {
            string s;
            cin>>s;
            LL n=0;
            rep1(i,0,(int)s.size()-1){
                n=n*10+s[i]-'0';
                if(n>317)break;
            }
    
            printf("Case #%d: ",kk++);
            if(n>317)puts("317");
            else
            {
                 int x=lower_bound(ans,ans+19,n)-ans;
                 if(ans[x]>n)x--;
                 printf("%d
    ",ans[x]);
            }
    
        }
    }
    
  • 相关阅读:
    webpack 压缩js
    系统host文件
    promise
    Cookie与Session
    java普通分页(低级分页)
    容器部署MySQL数据迁移
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/AWCXV/p/9625390.html
Copyright © 2020-2023  润新知