6174问题

来源:互联网 发布:神吐槽 知乎 编辑:程序博客网 时间:2024/06/07 09:54
#include<stdio.h>#include<stdlib.h>#include<string.h>int num[2000];int count;int get_next(int x){    int a,b;    char s[10];    sprintf(s,"%d",x);//转化成字符串    int n = strlen(s);    for(int i = 0; i < n; ++i)//排序        for(int j = i+1; j < n; ++j)        if(s[i] > s[j])        {            char t = s[i];            s[i] = s[j];            s[j] = t;        }    sscanf(s,"%d",&b);//转化成数字    for(int i = 0; i < n/2; ++i)//字符串反转    {        char t = s[i];        s[i] = s[n-1-i];        s[n-1-i] = t;    }    sscanf(s,"%d",&a);//转化成数字    return a - b;//返回差值}int main(){    scanf("%d",&num[0]);    printf("%d",num[0]);    count = 1;    for(;;)    {        num[count] = get_next(num[count-1]);        printf("-->%d",num[count]);        int found = 0;        for(int i = 0; i < count; ++i)            if(num[i] == num[count])            {                found = 1;                break;            }        if(found == 1)            break;        count++;    }    printf("\n");    return 0;}

0 0
原创粉丝点击