#include <stdio.h> #include <string.h>

void Next(char n[], int k, int m) { int len = strlen(n); // 求出基准点n的长度 int num[len]; // 将n转换成数组形式,方便计算 for (int i = 0; i < len; i++) { num[i] = n[i] - '0'; } for (int i = 0; i < m; i++) { // 循环输出后面m个k进制数 int carry = 1; // 进位标志 for (int j = len - 1; j >= 0; j--) { // 从低位向高位处理 num[j] += carry; // 先加上进位 carry = num[j] / k; // 计算进位 num[j] %= k; // 取模得到当前位的值 if (j == 0 && carry > 0) { // 如果最高位有进位,输出后面的0 printf("%d", carry); // 输出最高位的进位 for (int l = 0; l < len; l++) { printf("0"); } printf("\n"); break; // 直接退出循环,后面的数已经不用输出了 } } if (carry == 0) { // 如果没有最高位的进位,输出当前数 int flag = 0; // 标志位,用于判断当前数是否为0 for (int j = 0; j < len; j++) { if (num[j] != 0) { flag = 1; } if (flag == 1) { printf("%d", num[j]); } } printf("\n"); } } }

int main() { char n[31]; // 基准点n,最多30位 int k, m; // k进制,输出m个数 scanf("%s %d %d", n, &k, &m); Next(n, k, m); return 0; }

输出连续的K进制数。 任意给定一个K1K≤10进制的数N不超过30位且第一位不为0以N为基准点输出其后M个K进制数。 编程要求 右侧编辑器中有一个函数Next它有三个参数nkm其中n为一个字符串存有基准点整数的字符串表示。 请在此函数中计算并输出k进制数n之后的m个数每一个数占一行。 注意:输出仍然是k进制而且第一位不能为0。 输入数据由评测系统读取并传递给Next函数。使用C语言编程

原文地址: https://www.cveoy.top/t/topic/bzcw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录