PTA刷题笔记(C语言) | 7-44 黑洞数 (20分)

待我称王封你为后i 2023-05-22 06:42 80阅读 0赞

开始刷题,感觉代码量和基础太渣了,导致数据结构不会,重头慢慢刷吧~
在这里插入图片描述


1、题目

在这里插入图片描述
输入样例:

123

输出样例:

1: 321 - 123 = 198
2: 981 - 189 = 792
3: 972 - 279 = 693
4: 963 - 369 = 594
5: 954 - 459 = 495


2、代码

  1. #include<stdio.h>
  2. int main(){
  3. int N,a=0,b=0,c=0;
  4. scanf("%d",&N);
  5. int max=-1,min=1000,cnt=1;
  6. int temp=N;
  7. int maxDigit, minDigit, midDigit;
  8. while(1){
  9. a=temp/100;
  10. b=temp/10%10;
  11. c=temp%100%10;
  12. if(a>=b && a>=c){
  13. maxDigit = a;
  14. }
  15. else if(b>=a && b>=c){
  16. maxDigit = b;
  17. }
  18. else{
  19. maxDigit = c;
  20. }
  21. if(a<=b && a<=c){
  22. minDigit = a;
  23. }
  24. else if(b<=a && b<=c){
  25. minDigit = b;
  26. }
  27. else{
  28. minDigit = c;
  29. }
  30. midDigit = a+b+c-maxDigit-minDigit;
  31. max = maxDigit*100+midDigit*10+minDigit;
  32. min = minDigit*100+midDigit*10+maxDigit;
  33. temp=max-min;
  34. printf("%d: %d - %d = %d\n",cnt,max,min,temp);
  35. if(temp==0||temp==495) break;
  36. cnt++;
  37. max=-1,min=1000;
  38. }
  39. return 0;
  40. }

在这里插入图片描述

3、讨论

这个题很有意思的哈,本来以为就是个 “简单” 题,用循环来计算最大值最小值,果然超时了。。。

  1. #include<stdio.h>
  2. int main(){
  3. int N,a=0,b=0,c=0;
  4. scanf("%d",&N);
  5. int max=-1,min=1000,cnt=1;
  6. int temp=N;
  7. while(1){
  8. a=temp/100;
  9. b=temp/10%10;
  10. c=temp%100%10;
  11. int n[6]={ 0};
  12. n[1]=100*a+10*b+c;
  13. n[2]=100*a+10*c+b;
  14. n[3]=100*b+10*a+c;
  15. n[4]=100*b+10*c+a;
  16. n[5]=100*c+10*b+a;
  17. n[6]=100*c+10*a+b;
  18. int i;
  19. for(i=1;i<=6;i++){
  20. if(n[i]>max){
  21. max=n[i];
  22. }
  23. }
  24. for(i=1;i<=6;i++){
  25. if(n[i]<min){
  26. min=n[i];
  27. }
  28. }
  29. temp=max-min;
  30. printf("%d: %d - %d = %d\n",cnt,max,min,temp);
  31. if(temp==0||temp==495) break;
  32. cnt++;
  33. max=-1,min=1000;
  34. }
  35. return 0;
  36. }

上网一搜,新的方法是分别取 a,b,c 的最大值和最小值进行组合,这样就不用循环了,很好用!

妙啊!!!
在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PTA 黑洞 C语言

    PTA 黑洞数 C语言 问题描述:   黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。      任何一个各位数字不全相同的三