zoukankan      html  css  js  c++  java
  • 51nod 2020 排序相减

    题目来源: syu练习题
    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
     收藏
     关注

    “排序相减”操作是指对于任意一个四位数n,将四个数字分别进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n1,然后继续将n1中的四个数字进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n2,以此类推,最后总会得到一个数字黑洞,无法跳出。

     

    例如:样例2中4176 = 6532 - 2356

    Input
    第一行输入一个整数T,表示数据组数(1<T<10000);
    第二行输入一个正整数n(1000<=n<=9999)和一个正整数k(1<=k<=100),表示操作次数;
    Output
    对于每组数据,输出对于开始的数据n在第k次“排序相减”后结果绝对值。
    Input示例
    2
    1234 2
    3562 1
    Output示例
    8352
    4176

    模拟题 水题


    #include <iostream>
    #include <algorithm>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	while(n--)
    	{
    		int val, times, sqs4[4], tmp;
    		cin>>val>>times;
    		while(times--)
    		{
    			tmp = val;
    			int flag = 0;
    			while(tmp)
    			{
    				sqs4[flag++] = tmp % 10;
    				tmp /= 10;
    			}
    			sort(sqs4,sqs4 + 4);
    			int ta = 0, tb = 0;
    			flag = 10;
    			for(int i = 0; i < 4; i++)
    			{
    				ta += sqs4[i] * flag / 10;
    				flag *= 10;
    			}
    			flag = 10;
    			for(int i = 3; i >= 0; i--)
    			{
    				tb += sqs4[i] * flag / 10;
    				flag *= 10;
    			}
    			if(tb > ta)
    			{
    				swap(ta,tb);
    			}
    			val = ta - tb;
    		}
    		cout<<val<<endl;
    	}
    	return 0;
    }




  • 相关阅读:
    第十三周作业
    第十二周作业2
    第十二周作业
    第十一次作业
    第十周作业
    第九周作业
    第十五次作业
    十四周上机作业
    第十三周上机作业
    第十二周作业
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270712.html
Copyright © 2011-2022 走看看