問題描述
本題要求你找到一些5位或6位的十進制數字。滿足如下要求:
該數字的各個數位之和等於輸入的整數。
輸入格式
輸出格式
數字按從小到大的順序排列。
如果沒有滿足條件的,輸出:-1
樣例輸入
樣例輸出
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
樣例輸入
樣例輸出
-1
藍橋大部分題目還是暴力搜索,這裏就算是很基礎的。
#include<iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false); //取消cin在stdin上的同步,增加cin的讀取效率
long long int i,x;
int n,m,j;
int a[6] = { 0 };
char flag = false; //判斷有沒有迴文數輸出
cin >> n;
m = 10;
for (i = 10000;i < 1000000;i++)
{
x = i;
for (j = 0;j < 6;j++) //讀取並且記錄該數字的每一位
{
a[j] = x % 10;
x /= 10;
}
if (a[0] + a[1] + a[2] + a[3] + a[4] +a[5] == n){
if (a[5] == 0) { //a[5]是0代表是5位數
if (a[0] == a[4] && a[1] == a[3])
{
flag = true;
cout << i << endl;
}
}
else { //6位數
if (a[0] == a[5] && a[1] == a[4] && a[2] == a[3])
{
flag = true;
cout << i << endl;
}
}
}
}
if (!flag)
cout << "-1" << endl;
system("pause");
}