UVa 11371 - Number Theory for Newbies

原创 2015年07月08日 20:36:50

題目:給你一個數字n,將裡面每位的數重新組合形成a,b,使得a-b最大且是9的倍數。

分析:數論。題目要求a,b和n的位數相同,不能有前導0。

            定理1:交換一個數字中的某兩個位的數,形成的新數組和原數字之差是9的倍數;

            證明1:設數字為abc..i..j...xwz,其中每个字母代表一个位,对应值可以相同,

                          那么随意交换两位i,j得到的新数字为abc..j..i..xwz,做差为9..90..0 *(i-j),

                          所以一定是9的倍数,得证。

           通過上面定理可以繼續證明,任意交換任意位數字形成的新數字和原數字的差是9的倍數;

           所以取a為最大組合,即遞減序,b為遞增序即可;

           但是,這裡要求位數相同,所以b取首尾不是0的數字的最小值,先取遞增序,

           然後,交換第一個非0數和首位的1即可。

說明:╮(╯▽╰)╭。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

bool cmp1(char a, char b)
{
	return a < b;
}

bool cmp2(char a, char b)
{
	return a > b;
}

int main()
{
	char buf[31];
	while (gets(buf)) {
		int len = strlen(buf);
		long long A = 0LL, B = 0LL;
		sort(buf, buf+len, cmp1);
		if (buf[0] == '0') {
			for (int i = 0; i < len; ++ i)
				if (buf[i] != '0') {
					swap(buf[i], buf[0]);
					break;
				}
		}
		for (int i = 0; i < len; ++ i)
			A = A*10LL + buf[i]-'0';
		sort(buf, buf+len, cmp2);
		for (int i = 0; i < len; ++ i)
 			B = B*10LL + buf[i]-'0';
 		printf("%lld - %lld = %lld = 9 * %lld\n",B,A,B-A,(B-A)/9LL);
	}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

UVA, 11064 Number Theory

题意:GCD(m,n)是指n和m的最大公约数,现在给你个数n,找所有比n小的m,m满足GCD(m,n)!=1且GCD(m,n)!=m,就是让你找所有既不是因子也不是互质的数。比如6的因子是1,2,3,...

Problem 1402 猪的安家(中国余数定理)

Problem Description Andy和Mary养了很多猪。他们想要给猪安家。但是Andy没有足够的猪圈,很多猪只能够在一个猪圈安家。举个例子,假如有16头猪,Andy建了3个猪圈,为了保...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Volume 1. Elementary Problem Solving :: Maths - Number Theory Uva 575,10110,550,568,408,10061,10392

刘汝佳 算法入门 第一版 Uva题目集合(六)

[number theory]数论

数论

HDU 5584 LCM Walk(number theory && GCD)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5584题目大意:对于一组测试数据,给出一个终点的坐标(ex, ey)。对于某一个坐标(x, y), 设LC...

Installing LAMP On Ubuntu For Newbies

In this guide I will show you how to install a LAMP system. LAMP stands for Linux, Apache, MySQL, PH...

Geometric Theory for 3D Graphics

Geometric Theory for 3D Graphics This is a smart resource. Use a QR reader or the Aurasma app...

hdu 4215 Number Theory?(打表)

题目: E(N) = |{i | gcd(N, i) = 1, 1 F(N) = |{i | N % i = 0, 1 求有多少区间段[l,r](1 打表后,发现29以后都是1...

[SinGuLaRiTy-1003] Number Theory-Basic 数论

Copy right SinGuLaRiTy 2017 All rights reserved.

UESTC Training for Graph Theory——c、Catenyms

Catenyms Time Limit: 1000 ms Memory Limit: 65536 kB Solved: 148 Tried: 1114 Description ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)