九九归一

九九归一


稍作尝试可得三类情况, 分类讨论:
1. 根本就没有循环/循环节大于phi(n), 当且仅当a, n不互质
2. 循环节等于phi(n)
3. 循环节为phi(n)的因数

2, 3类情况需要通过运算来判别.
通过快速幂来加速运算(又是二进制拆分思想…)
代码不是我的.

#include<cstdio>
#include<cstring>

using namespace std;
const int N=100100;
int p[N],c[N],ans,n,m,k,x,tot,flag;

long long pow(long long x,int len)
{
    if (len==1) return x;
    long long t=pow(x,len/2);
    if (len%2)
        return t*t%k*(long long)x%k; else
        return t*t%k;
}

int main()
{
    scanf("%d%d",&n,&m);
    k=n;ans=n;
    for (int i=2;i*i<=n;i++)
    if (n%i==0)
    {
        while (n%i==0) n/=i;
        ans=ans/i*(i-1);
    }
    if (n!=1) ans=ans/n*(n-1);
    for (int i=2;i*i<=ans;i++)
    if (ans%i==0)
    {
        p[++tot]=i;
        if (ans/i!=i)
            p[++tot]=ans/i;
    }
    while (m--)
    {
        scanf("%d",&x);
        flag=1;
        for (int i=1;i<=tot;i++)
        if (pow(x,p[i])==1)
        {
            flag=0;
            break;
        }
        if (flag && pow(x,ans)==1)
            printf("1"); else
            printf("0");
    }
    printf("\n");
}

转载于:https://www.cnblogs.com/ZeonfaiHo/p/6402852.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原始数字: 123456789 替换后数字: 567891234 暗语列表: 01: 桃花运 02: 银杏 03: 青梅竹马 04: 一心一意 05: 二话不说 06: 三生有幸 07: 四季如春 08: 五颜六色 09: 六畜兴旺 10: 七上八下 11: 八仙过海 12: 九九归一 13: 十全十美 14: 十拿九稳 15: 百花齐放 16: 千方百计 17: 万紫千红 18: 一箭双雕 19: 二虎相斗 20: 三贤三胜 21: 四海一家 22: 五谷丰登 23: 六根清净 24: 七星高照 25: 八面玲珑 26: 九死一生 27: 十年生死两茫茫 28: 百感交集 29: 千夫所指 30: 万箭穿心 31: 一路顺风 32: 二龙戏珠 33: 三位一体 34: 四通八达 35: 五大三粗 36: 六合一波 37: 七仙女 38: 八仙过海各显神通 39: 九龙壁 40: 四面楚歌 41: 守株待兔 42: 虎背熊腰 43: 龟兔赛跑 44: 鸡犬不宁 45: 狼狈为奸 46: 青出于蓝 47: 白眉赤眼 48: 金蝉脱壳 49: 翻山越岭 50: 掌上明珠 51: 问心无愧 52: 风雨同舟 53: 明眸善睐 54: 点石成金 55: 神仙难测 56: 大智若愚 57: 一心向善 58: 为人民服务 59: 只争朝夕 60: 勤能补拙 61: 洛阳纸贵 62: 南辕北辙 63: 好事多磨 64: 一曲肝肠断 65: 一针见血 66: 三人成虎 67: 肆无忌惮 68: 方逢时艰 69: 毕恭毕敬 70: 潜龙勿用 71: 知音难觅 72: 切莫错过 73: 信口开河 74: 言传不如身教 75: 祸从天降 76: 水滴石穿 77: 一击即中 78: 四面出击 79: 鼓足干劲 80: 滴水之恩,涌泉相报 代码实现如下: message = "有萝卜14.19元、白菜05.58元、芹菜29.60元、韭菜78.26元、蒜87.26元" num_dict = {'5': '1', '6': '2', '7': '3', '8': '4', '9': '5', '1': '6', '2': '7', '3': '8', '4': '9'} original_nums = '' for c in message: if c.isdigit(): original_nums += num_dict[c] elif c == '.': original_nums += '.' print(original_nums) # 输出:129143969.8743.78 # 提取出每个菜品的价格 prices = original_nums.split('.') print(prices) # 输出:['129143969', '8743', '78'] # 还原回原始数字 for i in range(len(prices)): original_price = '' for c in prices[i]: original_price += num_dict[c] prices[i] = original_price print(prices) # 输出:['234517689', '4196', '43'] # 将还原后的数字用逗号链接成一个字符串 new_message = ','.join(prices) print(new_message) # 输出:234517689,4196,43
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值