P00604:数位和(c++代码)
作者:互联网
目录
题目
题目描述
给出一个有 N 位的整数,并且各位数的和也是 N,求满足条件的最小、最大的 N 位的整数分别是多少。
格式
输入
共一行有一个正整数 N。1<=N<=1000
输出
输出共两行,第一行为最小的 N 位整数,第二行为最大的 N 位整数
样例
输入数据 1
6
输出数据 1
100005
600000
分析
求最小值
根据小学比大小知识,可得知:让这个数首位为1时,这个数最小,然后从末位开始赋值,赋值得越大,这个数越大。
求最大值
同求最小值,从首位开始,赋值得越大,这个数越大。
CODE(c++)
#include<bits/stdc++.h>
using namespace std;
int n,sumx,sumd,x[1003],d[1003];
int main(){
scanf("%d",&n);
x[1]=1,sumx=n-1,sumd=n;
for(int i=n;i>=2;i--){
if(sumx>9)
x[i]=9,sumx-=9;
else{
x[i]=sumx;
break;
}
}
for(int i=1;i<=n;i++){
if(sumd>9)
d[i]=9,sumd-=9;
else{
d[i]=sumd;
break;
}
}
for(int i=1;i<=n;i++)printf("%d",x[i]);
printf("\n");
for(int i=1;i<=n;i++)printf("%d",d[i]);
return 0;
}
标签:题目,sumx,int,c++,最小值,P00604,sumd,数位 来源: https://blog.csdn.net/yinpeichu2021/article/details/122657911