ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小红的375(思维+数学)

2021-12-05 13:32:43  阅读:347  来源: 互联网

标签:思维 输出 int 小红 125 375 mp 倍数


题目链接:登录—专业IT笔试面试备考平台_牛客网牛客网是互联网求职神器,C++、Java、前端、产品、运营技能学习/备考/求职题库,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://ac.nowcoder.com/acm/contest/11218/F

题目描述

小红拿到了一个正整数。她希望你能重排这个正整数的数位,使得它能被 375 整除。你能帮帮她吗?

输入描述:

一个正整数,大小不超过 10^{300000}

输出描述:

如果无法完成重排,请输出-1。
否则输出任意合法解即可。请注意务必保证输出的数不含前导零,且是375的倍数。输出数的长度、包含的每个数字的出现次数必须和输入的数相等。

示例1

输入

100002

输出

120000

说明

输出201000等答案也是可以通过的。
但012000是不合法的,因为它包含了前导零。输出123000、222000也是不合法的,因为它不是原正整数的重排。输出200100也是不合法的,因为它不是375的倍数。

思路:375 = 3*125

所以我们可以知道:首先要是3的倍数才行,所以先判断一下所有位数的和是不是3的倍数。然后再判断是不是125的倍数,而125的倍数只需要判断末位3位数即可,如果可以凑出{"000","500","250","750","125","375","625","875"} 这里面任意一种,就说明是可以的。

注意:3075 我们需要的是3750而不是0375。所以我们把有0的放到前面判断就可以了,这样可以保证没有前导0。

如果可以凑出,最后的结果可以从大到小输出,再加上凑出的数即可。

上代码:

#include <bits/stdc++.h>
using namespace std;
map<char,int> mp;
string check[8]= {"000","500","250","750","125","375","625","875"};
bool flag = false;
int main() {
	string s;
	cin >> s;
	int sum=0;
	for (int i = 0; i < s.size(); i++){
		sum += s[i]-'0';
		mp[s[i]]++;
	}
	if(sum%3!=0){
		puts("-1");
		return 0;
	}
	for (int i = 0; i < 8; i++){
		for (int j = 0; j < 3;j++){
			mp[check[i][j]]--;
		}
		int k = 0;
		for (k = 0; k <= 9;k++){
			if(mp[k+'0'] < 0 ){
				break;
			}
		}
		if(k==10){
			for (int j = 9; j >= 0;j--) {
				while(mp[j+'0']>0){
					cout << j;
					mp[j+'0']--;
				}
			}
			cout << check[i] << endl;
			flag = true;
			break;
		}
		for (int j = 0; j < 3;j++){
			mp[check[i][j]]++;
		}
	}
	if(!flag){
		puts("-1");
	}
	return 0;
}

标签:思维,输出,int,小红,125,375,mp,倍数
来源: https://blog.csdn.net/lgz0921/article/details/121728127

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有