计蒜客 Reversion Count
Reversion Count
点击打开链接
Description:
There is a positive integer X, X's reversion count is Y. For example, X=123, Y=321; X=1234, Y=4321. Z=(X-Y)/9, Judge if Z is made up of only one number(0,1,2...9), like Z=11,Z=111,Z=222,don't consider '+'and '-'.
Input:
Input contains of several test cases. Each test case only contains of a number X, L is the length of X. ( 2 <= L < 100)
Output:
Output “YES”or “NO”.
样例输入
10 13
样例输出
YES YES
题目来源
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛
首先 一个数n与他反序数的差的绝对值,一定是9的倍数。证明如下:
设四位数 ABCD 他的反序数是DBCA
ABCD-DCBA=(1000*A+100*B+10*C+D)-(1000*D+100*C+10*B+A)
=(1000-1)*A+(100-10)*B-(100-10)*C-(1000-1)*D
=999*A+90*B-90*C-999*D
=(111*A+10*B-10*C-111*D)*9
再设五位数 ABCDE 他的反序数是 EDCBA
ABCDE-EDCBA=(10000*A+1000*B+100*C+10*D+E)-(10000*E+1000*D+100*C+10*B+A)
=9999*A+990*B+0*C-990*D-9999*E
=(1111*A+110*B-110*D-1111*E)*9
对于任一数都可以按此方法证明。
现在我们可以观察到 要想使最后结果全由同一个数字组成就取决于 除第一位与最后一位 剩余所有对称位置的数的值是否相等,若相等则一定是1,11,111,1111...的倍数,不等则一定不是。
如四位数ABCD, 111*A-111*D的结果一定是111的倍数,要使最后结果也是1,11,111,1111...的倍数那么10*B-10*C=10*(B-C)的结果一定要是0(你说B-C的结果可能是11的倍数(除0)???)
五位数 ABCDE, 1111*A-1111*E的结果一定是1111的倍数,注意观察到 凡是有奇数位的数最中间的那个数最后一定被消掉了,对于ABCDE来说就是C最后被消掉了,所以最后一定要(110*B-110*D)=(B-D)*110的值为0
另外1到3位数可以直接输出YES,因为他们的结果都是1位数
打表找规律代码
#include<bits/stdc++.h>
using namespace std;
int rev(int x){int t = 0;int value = 0;while (x / 10){value = 10 * value + x % 10;x /= 10;}return value*10 + x;
}
int main()
{int x,y,z;for(x=0;x<100000;x++){y=rev(x);z=(x-y)/9;printf("%d ",x);z=abs(z);if(z<90)printf("YES\n");else{set<int> s;s.clear();while(z){s.insert(z%10);z/=10;}if(s.size()==1)printf("YES\n");else printf("NO\n");}}return 0;
}
AC代码
#include<stdio.h>
#include<string.h>char str[110];int main()
{while(~scanf("%s",str)){int l=strlen(str);if(l<=3){printf("YES\n");continue;}int flag=1;for(int i=1;i<=l/2-1;i++){if(str[i]!=str[l-1-i]) flag=0;}if(flag) printf("YES\n");else printf("NO\n");}return 0;
}
解法二:
JAVA
import java.math.BigInteger;
import java.util.Scanner;
import java.io.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
BigInteger x,y,z,xx;
x=cin.nextBigInteger();
xx=x;
y=BigInteger.ZERO;
z=BigInteger.ZERO;
BigInteger n,k;
n=BigInteger.ZERO;
k=BigInteger.ZERO;
while(x.compareTo(BigInteger.valueOf(0))!=0)
{
n=x.mod(BigInteger.valueOf(10));
y=y.multiply(BigInteger.valueOf(10));
y=y.add(n);
x=x.divide(BigInteger.valueOf(10));
}
z=xx.subtract(y);
z=z.abs();
z=z.divide(BigInteger.valueOf(9));
n=z.mod(BigInteger.valueOf(10));
z=z.divide(BigInteger.valueOf(10));
k=n;
// System.out.println(n);
// System.out.println(k);
int f=1;
while(z.compareTo(BigInteger.valueOf(0))!=0)
{
n=z.mod(BigInteger.valueOf(10));
if(k.compareTo(n)!=0)
{
f=0;
break;
}
z=z.divide(BigInteger.valueOf(10));
}
if(f==1)System.out.println("YES");
else System.out.println("NO");
}
}
}
C++
计蒜客 Reversion Count相关推荐
- 计蒜客 -- 常用STL题解
1.计蒜客 – 打印锯齿矩阵 问题描述 锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如: 3 5 2 6 1 2 3 4 1 6 2 7 读入若干对整数 (x,y),表示在第 x 行的末尾加上一个 ...
- 计蒜客 挑战难题 爬楼梯
计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...
- 无脑博士的试管们java_计蒜客 无脑博士和他的试管们
标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...
- 最短路(遍历边)计蒜客—DD坐地铁
题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...
- K - Triangle 计蒜客 - 42405
K - Triangle 计蒜客 - 42405 题意: 给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积 题解: 计算几何 三角形的三边ab,ac ...
- H - Prince and Princess 计蒜客 - 42402
H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...
- C - Digital Path 计蒜客 - 42397 05-29
C - Digital Path 计蒜客 - 42397 题意: 题意就是给出一个n ∗ m的数字矩阵每个矩阵元素之间只能上下左右走,而且下一个位置必须比当前位置的数字大1,入口和出口必须数边缘元素, ...
- 计蒜客可以做计算机编程吗,如果你的编程能力不足以支撑你成为工程师的野心,不妨到计蒜客上学学看...
在人才招聘领域存在这样一个怪圈,高校每年都说是最难就业年.人才过剩,而对于企业HR来说永远都招不到称心如意的人才.这个怪圈在"计蒜客"创始人俞昊然看来,主要是因为当今高校的教学资源 ...
- 计蒜客 - T1012 A*B问题
计蒜客 - T1012 A*B问题 相信你已经学会 A+B 问题了,那么问题又来了- 输入两个正整数 A 和 B ,求 A×B. 输入格式 一行,包含两个正整数 A 和 B,中间用单个空格隔开. 1≤ ...
最新文章
- Operation not allowed after ResultSet closed--操作mysql数据库
- Oracle优化06-Hint
- 官方一步解决各种Windows更新问题
- exchange2013-Database is mandatory on UserMailbox..
- python自动化部署工具_Python + Allure(报告)+ Jenkins(持续集成)接口自动化测试环境搭建...
- Android localsocket 的基础和使用实践: 01
- matlab 高级函数
- 回顾---对教师提出的5个问题的回答及个人感悟
- 用包管理python代码,提高开发效率
- Mirage学习笔记
- Bailian2939 玩游戏【模拟】
- msvcr100.dll不存在
- linux 截屏_如何在Linux上截图
- Confusing conditions about MySQL script
- Android Q版本实现自动连接WiFi
- 千年古刹南普陀寺义工十年发展已逾6000人
- 点击按钮复制文本框内容
- 【笔试——腾讯2021实习笔试题第二次2021.4.4】第3题 n人高空过钢索
- git squash
- java计算机毕业设计ssm大学生心理健康平台