问题标题: 酷町堂:5065 神秘咒语 急!急!急!

1
0
已解决
董宇昊
董宇昊
初级启示者
初级启示者

5065   神秘咒语经验值:0

题目描述 Description

在数字的世界有一个神秘的咒语叫做6174。
一个任意的四位正整数.将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174.即:7641-1467=6174.将永远出不来.
输入任意一个四位数数字(全相同的除外),输出变成神秘咒语的步数.

输入描述 Input Description

输入一个四位数

输出描述 Output Description

输出一个数字,表示变成神秘咒语的步数.

样例输入 Sample Input

4325

样例输出 Sample Output

3

#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
	int a,b,c,d;
	cin>>n;
	for(int i=1;i<=7;i++){
		a=n/1000;
		b=n%1000/100;
		c=n%100/10;
		d=n%10;
	}
    return 0;
}

半代码,排序求思路

 

董宇昊在2020-08-18 14:24:17追加了内容

#include<iostream>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int n,cnt;
int main(){
    int a[5];
    cin>>n;
    for(int i=1;i<=7;i++){
        a[1]=n/1000;
        a[2]=n%1000/100;
        a[3]=n%100/10;
        a[4]=n%10;
        sort(a+1,a+5);
        n=(a[1]*1000+a[2]*100+a[3]*10+a[4])-(a[4]*1000+a[3]*100+a[2]*10+a[1]);
        cnt++;
        if(n==6174) break;
    }
    cout<<cnt;
    return 0;
}

改了一下,还是不对


0
已采纳
张岳恒
张岳恒
资深光能
资深光能

定义两个数组;

while(n!=6174){

        a数组=n的各个位数

        b数组=n的各个位数

        sort(a从大到小排)

        sort(b从小到大排)

        定义两个变量分别按顺序存a,b数组中的值  (范例:p = a[1] * 1000 + a[2] * 100 + a[3] * 10 + a[4];)

        n=两个变量的差

        计数器++

}

输出

0
赵逸凡
赵逸凡
初级启示者
初级启示者

你可以用stringstream取出位数

0
0
0
董宇昊
董宇昊
初级启示者
初级启示者

加到30酷町豆!!!

0
朱子尘
朱子尘
初级光能
初级光能

函数

  • a[1]=;
  • a[2]=;
  • a[3]=;
  • a[4]=;
  • sort(a+1,a+1+4);
  • n=a[]*1000+a[]*100+a[]*10+a[]-a[]*1000-a[]*100-a[]*10-a[];//自己想

主函数

  • while(n!=6174){
    • judge();
    • cnt++;
  • }
0
张恩泽
张恩泽
高级天翼
高级天翼
sort(a+1,a+4+1,cmp);
maxn=a[1]*1000+a[2]*100+a[3]*10+a[4];
sort(a+1,a+4+1);
minn=a[1]*1000+a[2]*100+a[3]*10+a[4];
ans=maxn-minn;

核心,剩下的自己想

张恩泽在2020-08-18 16:11:31追加了内容

望采纳

0
张天璨
张天璨
新手天翼
新手天翼
#include<iostream>
#include<algorithm>
using namespace std;
int a[5];
int judge(int n){
    a[1]=n%10;
    a[2]=n/10%10;
    a[3]=n/100%10;
    a[4]=n/1000%10;
    sort(a+1,a+1+4);
    n=a[4]*1000+a[3]*100+a[2]*10+a[1]-a[1]*1000-a[2]*100-a[3]*10-a[4];
    return n;
}
int main(){
    int s,cnt=0;
    cin>>s;
    while(s!=6174){
        cnt++;
        s=judge(s);     
    }
    cout<<cnt;
    return 0;
}

 

我要回答