POJ1350 Cabric Number Problem [模拟]

来源:互联网 发布:6月淘客不计入淘宝权重 编辑:程序博客网 时间:2024/05/21 09:04

思路:

对这种整数的各个位上的数字之间的操作还是习惯用类似左移右移的方法,即/=10,*=10的方法写。

感觉这样写思路清晰。AC后找了网上别人的代码想对比,这样写代码也精简得多,而且不需要什么字符串的处理。

#include<iostream>#include<string>#include<algorithm>#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;int n,m;int arr[4];int main(){while(scanf("%d",&n),n!=-1){m=0;printf("N=%d:\n",n);while(n!=0&&n!=6174){int a=0,b=0,i=0;while(n){arr[i++]=n%10;n/=10;}sort(arr,arr+i);for(int j=0;j<i;j++){a*=10;b*=10;a+=arr[j];b+=arr[i-1-j];}n=b-a;m++;if((n==0&&m==1)||(m==1&&i!=4)){m=0;printf("No!!\n");break;}printf("%d-%d=%d\n",b,a,n);};if(m>0)printf("Ok!! %d times\n",m);}return 0;}


原创粉丝点击