c++问题,大佬快来救急!

rcbubxubeux 2024-01-30 09:52:45

一天早上,完全是偶然的机会,米尔科在街道中央发现了一个正整数N。因为米尔科很喜欢30这个数字,他想知道他在街上找到的这个数字,通过重新排列可以得到30的最大倍数。帮助米尔科并编写一个程序来计算这个数字(如果它存在的话)。

## 输入格式

输入的第一行也是唯一一行包含整数N,最多包含100000个数字。

## 输出格式

输出的第一行(也是唯一一行)必须包含任务所需的数字(如果存在)。如果不存在,则输出-1。

...全文
298 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 01-30
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8060966, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
  • 打赏
  • 举报
回复

#include <iostream>
#include <sstream>
#include <vector>

using namespace std;

int main(){
    int N;
    cin>>N;
    int num=N;
    vector<int> vec;
    while(num>0){
        int n=num%10;
        vec.push_back(n);
        num/=10;
    }
    vector<int>::iterator it;
    bool flag=false;
    int sum=0;
    for(it=vec.begin();it<vec.end();it++){
        if(*it==0){
            flag=true;
        }
        sum+=*it;
    }
    if(!flag){
        cout<<"no result"<<endl;
        return 0;
    }
    if(sum%3!=0){
        cout<<"no result"<<endl;
        return 0;
    }
    int arr[vec.size()];
     string str=to_string(N);
    int index=str.find('0',0);
    string prestr=str.substr(0,index-0);
    string laststr=str.substr(index+1,5-index);
    prestr+=laststr;
    prestr+="0";
    cout<<prestr<<endl;
    return 0;
}
DogDu 01-30
  • 打赏
  • 举报
回复 2

这个题目很简单,建议多思考思考,如果看了下面还不会建议转专业。
1.我们可以把N的每一位数进行分割。
2.把被30整除,当做被3整除和被10整除的交集。被10整除要求数字以0结尾(因为数字必须要大于等于30),这个时候我们把一个0放到尾端,如果没有0,直接返回-1,;再去看剩下的所有数字之和是否可以被3整除(可以一开始就直接判断N%3==0),如果不能被3整除,直接返回-1;当然如果N<30,我们可以直接返回-1.
3.这个时候我们把一个0放到尾端,剩下的数字按照从大到小依次放入高位即可。
4.请你自己编写代码。

  • 打赏
  • 举报
回复 2

这些学生作业不好好做,到处问

  • 举报
回复
@weixin_54230918 每次有学生过来问,都有你
  • 举报
回复
@嘉佑Shannon 那必须的,谁让这快过年了,没事干呢

64,311

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧