huashu21 2023-12-24 17:14 采纳率: 77.8%
浏览 29

C语言 OJ06:循环数

描述
若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为:
142857 *1 = 142857
142857 *2 = 285714
142857 *3 = 428571
142857 *4 = 571428
142857 *5 = 714285
142857 *6 = 857142。

请写一个程序判断给定的数是否是循环数。

注意:在此题中,输入数字串允许带前导0,且前导0不能被忽略,例如“01”是两位数字串,而“1”是一位数字串。但将数字串转化为整数做乘法运算或比较运算时,可以忽略前导0。

输入
一行,一个长度在 2 到 60 位之间的数字串。
输出
一个整数,若输入的数字串是循环数,输出1,否则输出0。

img


求解答!急

img

  • 写回答

2条回答 默认 最新

  • TengMMVP 2023-12-24 22:39
    关注

    以下是一个C语言程序,用于判断给定的数是否是循环数:

    #include <stdio.h>
    #include <string.h>
    
    int is_cyclic(char *num) {
        int len = strlen(num);
        long long n = atoll(num);  // 将数字串转换为整数
        char product[120];  // 存放乘积的字符串
    
        for (int i = 1; i <= len; i++) {
            sprintf(product, "%lld", n * i);  // 计算乘积并转换为字符串
            if (strlen(product) != len) {  // 乘积的位数不等于原数字的位数,不是循环数
                return 0;
            }
            char rotated[120];  // 存放循环移位后的字符串
            strncpy(rotated, product, len);  // 复制乘积的前len位到rotated中
            strcat(rotated, product + len);  // 将乘积的后几位接到rotated的后面
            if (strcmp(num, rotated) == 0) {  // 如果原数字串和循环移位后的字符串相等,是循环数
                return 1;
            }
        }
    
        return 0;
    }
    
    int main() {
        char num[61];  // 输入的数字串,长度为2到60位之间
        scanf("%s", num);
        int result = is_cyclic(num);
        printf("%d\n", result);
        return 0;
    }
    

    该程序首先定义了一个is_cyclic函数,用于判断给定的数字串是否是循环数。该函数接受一个指向数字串的指针作为参数,并返回一个整数,表示该数字串是否是循环数。函数内部使用一个循环来计算数字串与1到n之间的整数的乘积,并将乘积转换为字符串。然后,函数将乘积循环移位,得到一个新的字符串,并将其与原始数字串进行比较。如果两个字符串相等,则该数字串是循环数,函数返回1。否则,函数返回0。最后,程序从标准输入中读取一个数字串,调用is_cyclic函数判断它是否是循环数,并输出结果。
    【本题由文心一言4.0提供解答·内容仅供参考】

    评论

报告相同问题?

问题事件

  • 创建了问题 12月24日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit