组队赛-15

C题,找规律

 

在最小循环节里统计不同数的个数就行

复制代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
const int N=1e7+10;
bool st[N];
signed main()
{
    int p;
    ll n;
    scanf("%d%lld",&p,&n);
    st[0]=true;
    ll ans=1;
    long long int sum=0;
    if (p%2)
    {
        for (int i=0; i<n; i++)
        {
            sum+=(i+1);
            if (!st[sum%p])
            {
                ans++;
                st[sum%p]=true;
            }
            if ((i+1)==p)break;
        }
    }
    else if (p%2==0)
    {
        for (int i=0; i<n; i++)
        {
            sum+=(i+1);
            if (!st[sum%p])
            {
                ans++;
                st[sum%p]=true;
            }
            if ((i+1)==p*2)break;
        }
    }
    printf("%lld\n",ans);
    return 0;
}
复制代码

 

posted @   好腻友Π  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示