zoukankan      html  css  js  c++  java
  • CF1526B I Hate 1111

    传送门


    题意

    询问一个数x, 是否可以由 (11,111,1111,11111,… ?)中的某些相加得到(每个数可以用多次)

    题解

    其实不难。

    自然而然的想到, 假如有偶数个11比如1111, 111111, 肯定都是11的倍数,感觉不如直接用11

    对于奇数个11, 必然是11的倍数加上111,

    所以: 只有11和111有用

    中间的思考过程很复杂, 就不写了主要是当时神志不清

    容易发现, 如果这个数是合法的, 那么他除了111就是11(废话
    考虑枚举有多少111, 然后剩下的是否可以被11整除

    如何优化? 显然: 当我们用了很多111的时候, 每11个111都是11的倍数, 干脆用11算了
    所以其实111的个数不超过11, 枚举即可

    感觉很妙


    Impl

    #include <iostream>
    #include <cstdio>
    using namespace std;
     
    int read(){
        int num=0, flag=1; char c=getchar();
        while(!isdigit(c) && c!='-') c=getchar();
        if(c == '-') c=getchar(), flag=-1;
        while(isdigit(c)) num=num*10+c-'0', c=getchar();
        return num*flag;
    }
     
    const int N = 290005;
    int T, n;
    int A[N];
     
    int solve(int x){
        if(x%11 == 0) return true;
        for(int i=1; i<=20; i++){
            if(x >= 111*i && (x-111*i)%11==0) return true;
        }
        return false;
    }
     
    int main(){
        T = read();
        while(T--){
            int x = read();
            printf(solve(x)?"YES
    ":"NO
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    word2vec
    视频推荐系统
    python基础
    go-elasticsearch
    Docker 部署 go项目
    gohbase
    禅道部署linux
    jmeter 报错 Error occurred during initialization of VM Could not reserve enough space for object heap
    jarvis OJ-DSA
    算法-我的第一本算法书(一)
  • 原文地址:https://www.cnblogs.com/ltdjcoder/p/15547552.html
Copyright © 2011-2022 走看看