#include <stdio.h> #include <stdlib.h> int main() { char k[110]; // 字符串 int i = 0, len; scanf("%s", k); // k 最多 100 位 (k - 1) * 1000 + 471 for(i = 0; k[i] != '\0'; i++); len = i; if(i == 1 && k[0] == '1') { // 处理K=1的特殊情况。 printf("471\n"); return 0; } //从最低位开始计算K-1 for(i = len-1; i >= 0; i--) { if(k[i] == '0') { //当前位是0,需要从高位借1,算法继续循环 k[i] = '9'; } else { //当前位已经够减1,这个1可能是借给低位的也可能是末位的时候减1 k[i] -= 1; break; //跳出循环,K-1已经计算完毕。 } } // 将471之间追加到 K-1后面,就得到了(k-1)*1000+471. k[len] = '4'; k[len+1] = '7'; k[len+2] = '1'; k[len+3] = '\0'; //打印结果 for(i=0; k[i]=='0'; i++); //跳过最前面的0. for(; k[i] != '\0'; i++) { printf("%c", k[i]); } printf("\n"); return 0; }