定义
,表示
在十进制下的各位数字和。
现在给定一个
,请你求出最小正整数
,满足
.
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int length = in.nextInt();
for(int i=0;i<length;i++){
System.out.println(s(in.nextInt()));
}
}
public static String s(int x){
StringBuilder builder = new StringBuilder();
while(x-9>0){
builder.append("9");
x-=9;
}
String result = String.valueOf(x)+builder.toString();
return result;
}
}
var n = parseInt(readline())
var arr = []
while(n > 0){
var tmp = parseInt(readline())
arr.push(tmp)
n--
}
function foo(arr){
var res = []
for(var i = 0;i < arr.length;i++){
var k = Math.floor(arr[i]/9) // 计算9有多少位,13/9 = 1 18/9=2 24/9=2
var k1 = arr[i] % 9 // 最小数位和肯定是将余数放在最高位,其他位都是9
var str = ''
if(k1!==0){
str+=`${k1}`
}
for(var j = 0;j < k;j++){
str+='9'
}
res.push(str) // 49 99 699
}
return res
}
var res = foo(arr)
for(var i = 0; i< res.length;i++){
console.log(res[i])
} import java.util.Scanner;
/**
* @author Mr.Zhao
* @version 1.0
* @Description:
* @date 2020/1/5 10:48
*/
public class Test01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int[] arr = new int[i];
for (int i1 = 0; i1 < i; i1++) {
int j = scanner.nextInt();
arr[i1] = j;
}
for (int i1 = 0; i1 < arr.length; i1++) {
int k = arr[i1] / 9;
int k1 = arr[i1] % 9;
StringBuilder stringBuilder = new StringBuilder();
if (k1 != 0) {
stringBuilder.append(k1);
}
for (int i2 = 0; i2 < k; i2++) {
stringBuilder.append(9);
}
System.out.println(stringBuilder);
}
}
}
//位数之和等于x,且高位到低位非递减,这个数得最小
let len=parseInt(readline())
for(let i=0;i<len;i++){
let num=parseInt(readline())
//判断几位数
let bit=Math.ceil(num/9)
//一位数直接返回
if(bit===1){
console.log(num)
continue
}
//多位数则除了首位,末位一定都是9
let first=num-(bit-1)*9
let last="9"
while(bit>2){
last+=9
bit--
}
console.log(String(first)+last)
} T = int(input()) for i in range(T): x = int(input()) if x < 10: n = x else: if x % 9 == 0: b = x // 9 n = str(9)*b else: b = x // 9 n = str(x % 9) + str(9)*b print(n)
C++,题意就是给你一个数字x,让你反推一个数字n,要求n的各位数之和等于x,而且n要最小
那么只有可能先从低位往高位填,比如:个位填满了(个位为9),才会去考虑填十位,以此类推
#include <iostream>
#include <vector>
using namespace std;
void S(vector<int>& nums) {
string str;
for (int num : nums) {
// 主要特别考虑num%9=0的情况
if (num % 9 != 0)cout << num % 9;
while (num >= 9) {
cout << 9;
num -= 9;
}
cout << endl;
}
}
int main() {
// 意思是反推一个数字,这个数字的各位数之和等于x,而且这个数字必须最小
int n,num;
vector<int> nums;
cin >> n;
while (n-- > 0) {
cin >> num;
nums.push_back(num);
}
S(nums);
return 0;
}
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var arr = []
var T = null
rl.on('line', function (line) {
arr.push(parseInt(line))
if(arr[0] == arr.length-1){
for (let i = 1; i < arr.length; i++) {
let n = parseInt(arr[i]/9)
let f = arr[i] % 9
let str = f==0?'':String(f)
while(n>0){
n--
str += '9'
}
console.log(str)
}
}
//console.log(arr)
}); 解题思路:位数指的是个位,十位,百位这个位数,每个位数最大为 9,先填满低位的,剩余的在填到高位。输出采用字符串类型,不然会超出栈。
import java.util.Scanner;
/**
x<S(n),同等于x小于S(n)的最小值,十进制中,把后面位数的值(如个位数)设置越大,
整个数的值越小,因为是十进制,位数最大值为9.
**/
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);//输入字符
int length = in.nextInt();//nextInt()设置空格作为分隔
for(int i=0;i<length;i++){//把分隔开的数字分别放入S(n)方法中
System.out.println(s(in.nextInt()));
}
}
public static String s(int x){
StringBuilder builder = new StringBuilder();
//当各位数字和大于9时,和-9,若小于9,这个数作为最高位
while(x-9>0){
builder.append("9");//将9追加到此字符序列
x-=9;//各数字的总和x-9
}
String result = String.valueOf(x)+builder.toString();//最后小于9的数作为最高位,后面加上builder中追加的9
return result;
}
} import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int group = sc.nextInt();
for (int i = 0; i < group; i++) {
System.out.println(func(sc.nextInt()));
}
}
public static String func(int num) {
StringBuffer sBuffer = new StringBuffer();
while (num > 9) {
sBuffer.append("9");
num -= 9;
}
String res = String.valueOf(num) + sBuffer.toString();
return res;
}
} n=int(input()) for i in range(n): x=int(input()) k=x//9 m=x-9*k print int(str(m)+'9'*k)