題目:給你一個數字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 11371 - Number Theory for Newbies的更多相关文章

  1. UVA 1558 - Number Game(博弈dp)

    UVA 1558 - Number Game 题目链接 题意:20之内的数字,每次能够选一个数字,然后它的倍数,还有其它已选数的倍数组合的数都不能再选,谁先不能选数谁就输了,问赢的方法 思路:利用dp ...

  2. 2016级算法第二次上机-F.ModricWang's Number Theory II

    891 ModricWang's Number Theory II 思路 使得序列的最大公约数不为1,就是大于等于2,就是找到一个大于等于2的数,它能够整除序列中的所有数. 考虑使得一个数d整除数组中 ...

  3. 【BZOJ4026】dC Loves Number Theory 分解质因数+主席树

    [BZOJ4026]dC Loves Number Theory Description  dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源.    给 ...

  4. uva 11885 - Number of Battlefields(矩阵高速幂)

    题目连接:uva 11885 - Number of Battlefields 题目大意:给出周长p,问多少种形状的周长为p的,而且该图形的最小包围矩阵的周长也是p,不包含矩形. 解题思路:矩阵高速幂 ...

  5. BZOJ_4026_dC Loves Number Theory _主席树+欧拉函数

    BZOJ_4026_dC Loves Number Theory _主席树+欧拉函数 Description  dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯 竭 ...

  6. Number Theory Problem(The 2016 ACM-ICPC Asia China-Final Contest 找规律)

    题目: Mr. Panda is one of the top specialists on number theory all over the world. Now Mr. Panda is in ...

  7. [E. Ehab's REAL Number Theory Problem](https://codeforces.com/contest/1325/problem/E) 数论+图论 求最小环

    E. Ehab's REAL Number Theory Problem 数论+图论 求最小环 题目大意: 给你一个n大小的数列,数列里的每一个元素满足以下要求: 数据范围是:\(1<=a_i& ...

  8. 题解-Ehab's REAL Number Theory Problem

    Ehab's REAL Number Theory Problem 前置知识 质数 分解质因数 无向无权图最小环<讲> Ehab's REAL Number Theory Problem/ ...

  9. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

随机推荐

  1. hdu1730 Northcott Game,Nim-sum

    题解: 转化成求Nim-sum 每行黑白棋的初始间距作为每堆石子个数 假设当前为P态,则无论当前选手如何操作,下一个选手都能使其操作后的局面又变为P态. Nim-sum = 0,即P态. #inclu ...

  2. solr4.x设置默认查询字段

    1.如果需要同时在title和content中进行查询,可以添加如下字段: <field name="title_content" type="textComple ...

  3. ArrayList内元素按照字典排序

    package day08; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; ...

  4. Java并发编程之闭锁CountDownLatch简单介绍

    闭锁相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关闭着的,没有不论什么线程能够通过,当到达结束状态时.这扇门才会打开并容许全部线程通过.它能够使一个或多个线程等待一组事件发生. 闭锁状态包含一个 ...

  5. excel通过转成xml格式模板,下载成excel文件

    源代码: report ztest_down_excel. data: begin of i_file occurs , val() type c, end of i_file. data begin ...

  6. 基于visual Studio2013解决面试题之0808寻找中间数

     题目

  7. Swift - 产生不重复数字的随机数生成器

    在Swift中,可以使用函数类型的参数,也可以使用函数类型的返回值.而作为返回值的函数,还能“捕获”外部的值,并多次使用它.这个特性,常可用来创建各种生成器. 下面通过创建一个“随机数生成器函数”作为 ...

  8. OnClientClick和OnClick

    OnClientClick是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行 OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端 ...

  9. Java与C#的语法区别(不断更新中...)

    1.static关键字: 在java中静态成员能够被对象和类名调用: 在C#中,静态成员只能被类调用不能被对象调用. 2.for循环: 在java中可以在for前面添加标记,然后在for循环中可以br ...

  10. Delphi XE5 for Android(十一篇)

    http://www.cnblogs.com/ChinaEHR/category/521326.html http://blog.csdn.net/laorenshen