B.中位数
- 创业
- 2025-09-01 13:21:02

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; }上一篇
Python在网络安全中的应用python与网络安全
下一篇
排序与算法:希尔排序