主页 > 创业  > 

B.中位数

B.中位数
F - 岩上无心云相逐

  vjudge.net/problem/CodeForces-2032B/origin

给定两个数字 x,yx,y。你需要确定是否存在一个整数 nn 使得 S(n)=xS(n)=x,S(n+1)=yS(n+1)=y。

这里,S(a)S(a) 表示数字 aa 在十进制数字系统中的数字之和。

输入

每个测试包含多个测试用例。第一行包含测试用例的数量 tt (1≤t≤5001≤t≤500)。测试用例的描述随之而来。

每个测试用例的第一行包含两个整数 x,yx,y (1≤x≤1000,1≤y≤10001≤x≤1000,1≤y≤1000)。

输出

对于每个测试用例,如果不存在合适的 nn,则打印 "NO"。否则,输出 "YES"。

你可以以任何大小写输出每个字母(例如,"YES","Yes","yes","yEs","yEs" 将被识别为正面答案)。

示例 InputcopyOutputcopy 7 1 2 77 77 997 999 999 1 1000 1 1 11 18 1 Yes No No Yes No No Yes 注意

在第一个测试用例中,例如,n=100n=100 是有效的。S(100)=1S(100)=1,S(101)=2S(101)=2。

在第二个测试用例中,可以证明对于所有 nn,S(n)≠S(n+1)S(n)=S(n+1);因此,答案是 No。

在第四个测试用例中,n=10111−1n=10111−1 是有效的,它是一个由 111111 位数字 99 组成的数字。

思路:

因为s[a]==x,s[a+1]==y;S表示的是a这个数每一位数相加得到的结果s[a]; 分两种情况:x<y     则成立的话:x+1==y;及只有x的个位+1,且原个位不是9,(剩下的每一位一样) x>y 则成立的话:从个位起,有w(未知)个9,及w次x-=9直到x+1==y (这样的话s[a+1]的结果就是x=x-w*9  ==y);

 代码: //因为s[a]==x,s[a+1]==y;S表示的是a这个数每一位数相加得到的结果s[a]; //分两种情况:x<y //则成立的话:x+1==y;及只有x的个位+1,且原个位不是9,(剩下的每一位一样) //x>y //则成立的话:从个位起,有w(未知)个9,及w次x-=9直到x+1==y //(这样的话s[a+1]的结果就是x=x-w*9 ==y); #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int n, t, m, x, y; int main() { scanf("%d", &t); while (t--) { scanf("%d %d", &n, &m); n += 1; while (n >0) { if (n == m) { break; } else { n -= 9; } } if (n == m) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }
标签:

B.中位数由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“B.中位数