程序媛小秒


私信TA

用户名:uq_95485294184

访问量:1078

签 名:

等  级
排  名 5554
经  验 1527
参赛次数 0
文章发表 15
年  龄 0
在职情况 学生
学  校 武汉轻工大学
专  业

  自我简介:

TA的其他文章

通俗易懂C++
浏览:29

解题思路:1.分别求满足条件的五位数和六位数,利用三层循环实现。

               2.最外层从1开始,因为数字第一位不能为0,i,j,p从小到大循环保证最后输出顺序是从小到大的,不需要再次排序。

 for(int i=1;i<10;i++){
        for(int j=0;j<10;j++){
            for(int p=0;p<10;p++){ 
            ...
            }
      }
 }

               3.函数接收temp值,来区分输出五位数还是六位数,再函数调用时,先输出五位数,再输出六位数,保证顺序从小到大.

shu(5);
shu(6);

               4.用sum表示所有位数加起来的值,五位数为

    sum=i*2+j*2+p;

                六位数为

        sum=i*2+j*2+p*2;

                5.对得到的sum进行判断,是否等于n即输入,若等于进行输出,以五位数为例子,如下,res为输出数字

if(temp==5){
                    sum=i*2+j*2+p;
                    if(sum==n){
                    res=i*10000+j*1000+p*100+j*10+i;
                    // 记录符合条件数目,count为0时,输出-1
                        count++;
                        cout<<res<<endl;
                    }
                }

            6.注意题目要求,共两种情况,有则输出对应数,无则输出-1,利用count初值为0来判断是否有满足的数,没有则count为0

if(count==0){
        cout<<-1<<endl;
    }

参考代码:

#include<iostream>
using namespace std;
int n;
int sum=0;
int res=0;
int count=0;
void shu(int temp){
    // 从外向里遍历使得到的数从小到大,第一位不为0,外层循环从1开始
     for(int i=1;i<10;i++){
        for(int j=0;j<10;j++){
            for(int p=0;p<10;p++){  
                if(temp==5){
                    sum=i*2+j*2+p;
                    if(sum==n){
                    res=i*10000+j*1000+p*100+j*10+i;
                    // 记录符合条件数目,cout为0时,输出-1
                        count++;
                        cout<<res<<endl;
                    }
                }
                if(temp==6){
                    sum=i*2+j*2+p*2;
                    if(sum==n){
                        res=i*100000+j*10000+p*1000+p*100+j*10+i;
                        count++;
                        cout<<res<<endl;
                    }
                }
            }
        }
    }
}

int main()
{   
    cin>>n;
    shu(5);
    shu(6);
    if(count==0){
        cout<<-1<<endl;
    }
    return 0;
}


 

0.0分

2 人评分

  评论区

  • «
  • »