首页 > 其他分享 >C. Physical Education Lesson

C. Physical Education Lesson

时间:2024-02-12 17:55:21浏览次数:28  
标签:insert read ll while && j% Lesson Education Physical

原题链接

题解


再结合代码应该就能看得懂了吧。。。
至于赛时怎么想出来的。我是观察样例得出来的
时间复杂度 \(O(2·t·\sqrt{n})\)

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

inline void read(ll &x) {
    x = 0;
    ll flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-') flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

int main()
{
    ll t;
    read(t);
    while(t--)
    {
        ll n,x;
        read(n); read(x);
        set<ll> q;
        ll a=n+x-2, b=n-x;
        for(ll i=1; i*i<=a; i++)
        {
            ll j=a/i;
            if(a%i==0 && i%2==0 && ((i+2)>>1) >= x)
            {
                q.insert((i+2)>>1);
            }
            if(a%j==0 && j%2==0 && ((j+2)>>1) >= x)
            {
                q.insert((j+2)>>1);
            }
        }
        for(ll i=1; i*i<=b; i++)
        {
            ll j=b/i;
            if(b%i==0 && i%2==0 && ((i+2)>>1) >= x)
            {
                q.insert((i+2)>>1);
            }
            if(b%j==0 && j%2==0 && ((j+2)>>1) >= x)
            {
                q.insert((j+2)>>1);
            }
        }
        write(q.size());
        putchar('\n');
    }
    return 0;
}

标签:insert,read,ll,while,&&,j%,Lesson,Education,Physical
From: https://www.cnblogs.com/pure4knowledge/p/18014000

相关文章

  • CF1928C Physical Education Lesson
    原题链接先考虑暴力枚举每个\(k\)是否合法,发现\(k\)合法当且仅当\((2k-2)\mid(n-x)\)或者\((2k-2)\mid(n+x-2)\)并且\(k\geqx\)。因为当\(n\)处于每一段中的第\(1\simk\)个数中时\(n-x\)是上一段的结尾,\(n\)处于每一段中的第\(k\sim2k-2\)个数中时\(n+(x......
  • Atcoder Educational DP Contest 题解
    比赛链接:Atcoderr或者题单A:Frog1常规线性dp,注意到对于每个落点来说,青蛙只能由第\(i-1\)个石头或者第\(i-2\)个石头转移得到,那么我们让\(dp[i]\)为当跳到第\(i\)个石头上的最小费用。此时显然有:\[dp_i=\min(dp_{i-1}+\left|h_i-h_{i-1}\right|,dp_{i-2}+\left|h_......
  • Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)
    目录题目链接题意题解代码题目链接C.DigitalLogarithm题意给两个长度位\(n\)的数组\(a\)、\(b\),一个操作\(f\)定义操作\(f\)为,\(a[i]=f(a[i])=a[i]\)的位数求最少多少次操作可以使\(a、b\)两个数组变得完全相同题解性质:对于任何数,经过两次操作我们一定可以让其变为\(......
  • Educational Codeforces Round 145 (Rated for Div. 2)C. Sum on Subarrays(构造)
    很意思的一道构造题题意:给一个\(n、k\),让构造长度为n的数组满足,子数组为整数的个数为k个,负数的为\(k-(n+1)*n/2\),每个数的范围为\([-1000,1000]\)这种构造题可以考虑就是前一段可以一直用一样的、最小的。我们观察可以发现\(k+k-(n+1)*n/2=(n+1)*n/2\)也就是所有子数组......
  • CF138A Literature Lesson
    原题传送门分析既然题目要求求出所有四行诗共同的形态,那我们就想到可以用位运算。我们用二的次方来表示每一种形态,然后把每一篇诗的形态或起来,就可以得到最终的形态。输出的时候再拿个函数转一下就行了。有了基本框架,我们就可以开始构造特殊情况。题目中说到如果有aaaa这种......
  • Codeforces Educational Round
    CodeforcesEducationalRoundEducationalCodeforcesRound160(RatedforDiv.2)(A-D)https://www.cnblogs.com/ComistryMo/articles/17920495.htmlEducationalCodeforcesRound161(RatedforDiv.2)(A-E)https://www.cnblogs.com/ComistryMo/articles/17983580......
  • Educational Codeforces Round 65 (Rated for Div. 2)C. News Distribution(模拟,计算的
    这道题目明显和出现4次的数和出现2次的数的个数有关系,只需要在每次更新之后维护这两个信息即可,我们在算出现2次的数的个数时其实会把出现4次的数的个数会把出现2次的数的个数+2,在判断时需要考虑这一点。也就是\(cnt2>=4\&\&cnt4>=1\)时才有解#include<bits/stdc++.h>#definer......
  • Educational Codeforces Round 159 (Rated for Div
    EducationalCodeforcesRound159(RatedforDiv.2)ABinaryImbalance题目大意给定一个长度为n的一个01字符串,我们执行以下操作:当s[i]!=s[i+1]在中间插入0问:是否可以实现0的个数大于1的个数解题思路由题意可以明显看出只要有0就可以实现。下面简单分析下:0的个数大......
  • Educational Codeforces Round 160 (Rated for Div
    ARatingIncreas题目大意给定一个数字,让我们拆分成两个数,这两个数满足以下条件:a<b.两个数没有前缀0.问:输出满足条件的数a,b.解题思路直接暴力循环这个数的位数次,若满足a<b,再判断两个数的位数和是否与拆分前相同.代码#include<bits/stdc++.h>#defin......
  • Educational Codeforces Round 161 (Rated for Div
    ATrickyTemplate题目描述给一个数字n和三个长度为n的字符串a,b,c。找一个模板使得字符串a,b匹配,而c不匹配,是否存在这样一个模板.匹配的定义是:当模板字母为小写时,两个字符串字符相同,为大写时,两个字符不同,这样的两个字符串则匹配解题思路我们可以直接得出当a字符串......