第11课选做题。

This commit is contained in:
unlockable
2022-12-01 15:52:39 +08:00
parent 42158dfdef
commit 26be4191d4
2 changed files with 59 additions and 46 deletions

View File

@@ -1,53 +1,13 @@
#include <stdio.h>
void calcNext(int lastResult) {
if (lastResult == 6174)
{
return;
}
}
char *a = "HAPPYNEWYEAR";
char b[] = "happynewyear";
int main() {
int digits[10] = {0};
int maxComb, minComb;
int nowChecking;
int curDigit = 0;
int i = 0, j = 0;
scanf("%d", &nowChecking);
while (nowChecking > 0) {
curDigit = nowChecking % 10;
if (digits[curDigit] > 0) {
printf("error");
return 0;
}
else {
digits[curDigit] = 1;
nowChecking /= 10;
}
}
while (nowChecking != 6174) {
maxComb = 0;
minComb = 0;
for (i = 0; i < 10; i++) {
for (j = 0; j < digits[i]; j++) {
minComb = minComb * 10 + i;
}
}
for (i = 9; i >= 0; i--) {
for (j = 0; j < digits[i]; j++) {
maxComb = maxComb * 10 + i;
}
}
nowChecking = maxComb - minComb;
printf("%d - %d = %d\n", maxComb, minComb, nowChecking);
for (i = 0; i < 10; i++) {
digits[i] = 0;
}
while (nowChecking > 0) {
digits[nowChecking % 10]++;
nowChecking /= 10;
}
nowChecking = maxComb - minComb;
int i = 8;
printf("%c%c%s%s\n", *a, b[0], b+5, &a[5]);
while(*(a+i)) {
putchar(*(a+(i++)));
}
return 0;
}

53
11/Optional02.c Normal file
View File

@@ -0,0 +1,53 @@
#include <stdio.h>
void calcNext(int lastResult) {
if (lastResult == 6174)
{
return;
}
}
int main() {
int digits[10] = {0};
int maxComb, minComb;
int nowChecking;
int curDigit = 0;
int i = 0, j = 0;
scanf("%d", &nowChecking);
while (nowChecking > 0) {
curDigit = nowChecking % 10;
if (digits[curDigit] > 0) {
printf("error");
return 0;
}
else {
digits[curDigit] = 1;
nowChecking /= 10;
}
}
while (nowChecking != 6174) {
maxComb = 0;
minComb = 0;
for (i = 0; i < 10; i++) {
for (j = 0; j < digits[i]; j++) {
minComb = minComb * 10 + i;
}
}
for (i = 9; i >= 0; i--) {
for (j = 0; j < digits[i]; j++) {
maxComb = maxComb * 10 + i;
}
}
nowChecking = maxComb - minComb;
printf("%d - %d = %d\n", maxComb, minComb, nowChecking);
for (i = 0; i < 10; i++) {
digits[i] = 0;
}
while (nowChecking > 0) {
digits[nowChecking % 10]++;
nowChecking /= 10;
}
nowChecking = maxComb - minComb;
}
return 0;
}