C. Unique Number
程序员文章站
2022-05-21 08:32:36
...
https://codeforces.ml/contest/1462/problem/C
题意:给你个数字x,让你去找一个整数t,满足t的各个位上的数字之和等于x,同时各个位上的数字互不相同。找得到就输出最小的t,找不到就输出-1。
注意到各个位上的数字互不相同,所以t最多是9位,由123456789组成,因此x的上限就是1+2+3…+9=45,超过45就找不到,输出-1。
接下来解决x<=45的情况。我们开个数组a,取max=9,对于每次操作,只要x>max,就让x-max,把max存进数组中,然后max-1(因为不能相同),重复这样的操作直到x<=max。然后把数组a倒着输出就行(因为要使t尽可能小)。
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int x;
cin >> x;
if (x > 45)
cout << "-1" << endl;
else {
int max = 9;
int a[10];
int k = 0;
while (1) {
if (x <= max) {
a[k] = x;
break;
}
if (x > max) {
a[k] = max;
x -= max;
max--;
k++;
}
}
for (int i = k; i >= 0; i--) {
cout << a[i];
}
cout << endl;
}
}
return 0;
}
上一篇: C语言——字符串逆序输出
下一篇: 新手村——C语言合法标识符程序
推荐阅读
-
JavaScript中的Number数字类型学习笔记
-
PDO版本问题 Invalid parameter number: no parameters were bound
-
MySQL索引类型Normal、Unique和Full Text的讲解
-
利用ROW_NUMBER() OVER函数给SQL数据库中每一条记录分配行号的方法
-
JS大坑之19位数的Number型精度丢失问题详解
-
详解JS转换数值函数Number()、parseInt()、parseFloat()
-
详解JS转换数值函数Number()、parseInt()、parseFloat()
-
Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
-
sqlServer使用ROW_NUMBER时不排序的解决方法
-
Javascript之Number对象介绍