A. 求出那个数
题目描述
求出一个最小的正整数 xxx,使得 xxx 每位数字的和恰好为 nnn。
输入格式
第一行一个正整数 TTT,代表测试数据的组数。
接下来 TTT 行每行一个正整数 nnn。
- 1≤T≤10001\le T\le10001≤T≤1000
- 0≤n<10000\le n<10000≤n<1000
输出格式
对于每组输入,输出最小的 xxx。
样例
输入 #1
2
5
14
输出 #1
5
59
- 尽量用 999,这样能使数位最小;
- nnn 不够 999 时,作为第一位输出;
- 若 nnn 为 000,特判输出 000。
#include <bits/stdc++.h>
//#define int long long
using namespace std;
void solve()
{
int n;
cin >> n;
if (n == 0)
{
printf("0\n");
return ;
}
string s = "";
while (n > 0) n -= 9,s += '9';
cout << n + 9 << s.substr(0,s.size()-1) << '\n';
}
signed main()
{
int TTT;
cin >> TTT;
// TTT = 1;
while (TTT--) solve();
return 0;
}
B. 田忌赛马·Easy
齐使者如梁,孙膑以刑徒阴见,说齐使。齐使以为奇,窃载与之齐。齐将田忌善而客待之。忌数与齐诸公子驰逐重射。孙子见其马足不甚相远,马有上、中、下辈。于是孙子谓田忌曰:“君弟重射,臣能令君胜。”田忌信然之,与王及诸公子逐射千金。及临质,孙子曰:“今以君之下驷与彼上驷,取君上驷与彼中驷,取君中驷与彼下驷。”既驰三辈毕,而田忌一不胜而再胜,卒得王千金。于是忌进孙子于威王。威王问兵法,遂以为师。
——「史记·孙子吴起列传第五」
在千年以前,孙膑就能靠着过人的智谋,通过巧妙地调整比赛的顺序,让三战皆背的田忌翻身成为两胜一败的赢家,也为自己赢得了别人的尊敬。在千年以后的今天,赛马依然是一项热门的娱乐活动,不过今天你要面对的却是更加困难的问题。
你和对手各自都有 NNN 匹马,要进行 NNN 场比赛。一匹马只能出场一次,同场比赛中速度快的马获得胜利。如果两匹马的速度一样的话,那么就是平局。你的对手会像齐王那样在第一场出速度最快的马,第二场出次快的马,…\dots…,第 NNN 场出速度最慢的马。
而你为了获胜,当然会按照某种策略安排你的 NNN 匹马的出场顺序。除此之外,你还可以决定比赛的时间,全部 NNN 场比赛都会在你决定的那一天举行。在比赛之前,你为了获胜会不辞辛苦的训练你的每一匹马;而你的对手自我感觉良好,不会训练他的马。每一匹马的素质不同,我们用 aia_iai 来表示你的第 iii 匹马的速度。每经过一天的训练,你的马的速度就会增加 111。
现在你拿到了对手的 NNN 匹马的资料,请你尽快计算训练的天数 MMM,以使得在第 M+1M+1M+1 天比赛的时候,你可以安排一个出场顺序使得你可以在全部的 NNN 场比赛中至少获胜 KKK 场。
输入格式
第一行给出一个正整数 TTT,代表测试数据的组数。
每组测试数据有 333 行,第一行有两个以空格分隔的数字 N,KN,KN,K,含义如题目种描述。
第二行有 NNN 个以空格分隔的正整数,第 iii 个数字代表你第 iii 匹马的速度 aia_iai。
第三行有 NNN 个以空格分隔的正整数,第 jjj 个数字代表你对手第 jjj 匹马的速度 cjc_jcj。
- 1≤T≤301\le T\le301≤T≤30
- 1≤K≤N≤1051\le K\le N\le 10^51≤K≤N≤105
- 0≤ai,cj≤1090\le a_i,c_j\le 10^90≤ai,cj≤109
输出格式
对于每组测试数据输出一个非负整数 MMM,代表在第 M+1M+1M+1 天举办的赛马比赛中你可以至少赢得 KKK 场。
如果不止有一个 MMM 满足条件,请输出最小的那个。
样例
输入 #1
2
4 2
3 1 2 4
0 4 3 2
1 1
10
10
输出 #1
0
1
- 第 M+1M+1M+1 天的时候,你的马匹的速度分别是 a1+M,a2+M,a3+M,…,an+Ma_1+M,a_2+M,a_3+M,\dots,a_n+Ma1+M,a2+M,a3+M,…,an+M,需要派出最好的 KKK 匹马,对上对手最差的 KKK 匹马;
- 假设我们最好的 KKK 匹马是 a1≤a2≤a3≤⋯≤aka_1\le a_2\le a_3\le\dots\le a_ka1≤a2≤a3≤⋯<

最低0.47元/天 解锁文章
747

被折叠的 条评论
为什么被折叠?



