金马五校赛 I : 二数

原创 2018年04月15日 20:19:14

题目链接:点击打开链接

大意:

给定一个十进制下最多105位的数字,请你求出和这个数字的差的绝对值最小的二数,若答案不唯一,输出最小的那个。
也就是说,给定数字n,求出m,使得abs(n-m)最小且m[i] mod 2 = 0

思路:思路很好想,主要是细节,直接上代码吧。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<string>
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<map>
#define FAST ios::sync_with_stdio(false)
typedef long long ll;
const int maxn = 1000005;
using namespace std;

char a[maxn];
int b[maxn];

int main()
{
	FAST;
	int t;
	cin >> t;
	while(t--){
		cin >> a;
		int len = strlen(a);
		for(int i = 0; i < len; i++){
			b[i] = a[i] - '0';
		}
		if(len == 1){
			b[0] & 1 ? cout << b[0] - 1 << endl : cout << b[0] << endl;
		}
		else{
		int pos = len, x;
		for(int i = 0; i < len; i++){
			if(b[i] & 1){
				pos = i;
				x = b[i];
				break;
			}
		}
		if(x == 9){
			for(int i = pos; i < len; i++){
				b[i] = 8;
			}
		}
		else{
			bool flag = false;
			for(int i = pos + 1; i < len; i++){
				if(b[i] > 4) { flag = true; break;}
				if(b[i] < 4)  break;
				//if(b[i] == 4) continue;
			}
			if(flag){
				b[pos]++;
				for(int i = pos + 1; i < len; i++){
					b[i] = 0;
				}
			}
			else{
				b[pos]--;
				for(int i = pos + 1; i < len; i++){
					b[i] = 8;
				}
			}
		}
		int pos2;
		for(int i = 0; i < len; i++){
			if(b[i]){
				pos2 = i;
				break; 
			}
		}
		for(int i = pos2; i < len; i++){
			cout << b[i];
		}
		cout << endl;
		}
	}
	return 0;
}
over

SEM实战教程(五)

-
  • 1970年01月01日 08:00

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛

“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 A 黑白图像直方图 B 神无月排位赛 C I Love ces D 添加好友 E 字符串进制转换 F A序列...
  • my_sunshine26
  • my_sunshine26
  • 2017-07-10 14:10:04
  • 1497

2017上海金马五校程序设计竞赛 E:Find Palindrome

Time Limit: 1 s Description Given a string S, which consists of lowercase charac...
  • qq_37412229
  • qq_37412229
  • 2017-06-05 19:26:46
  • 270

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛

B - 合约数 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n...
  • hnust_Derker
  • hnust_Derker
  • 2018-04-15 19:06:59
  • 129

(补题心路)——“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛

不知道该摆出什么表情 别的比赛要脑细胞,这比赛要命
  • Dsaitou
  • Dsaitou
  • 2017-07-10 16:21:36
  • 274

【金马五校赛】I 二数(模拟)

链接:https://www.nowcoder.com/acm/contest/91/I 来源:牛客网 我们把十进制下每一位都是偶数的数字叫做“二数”。 小埃表示自己很聪明,最近他不仅能够从小数...
  • feng_zhiyu
  • feng_zhiyu
  • 2018-04-17 15:49:59
  • 8

第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 B 合约数(启发式合并)

链接:https://www.nowcoder.com/acm/contest/91/B来源:牛客网题目描述 在埃森哲,员工培训是最看重的内容,最近一年,我们投入了 9.41 亿美元用于员工培训和职...
  • lzc504603913
  • lzc504603913
  • 2018-04-15 19:17:02
  • 59

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛A题Wasserstein Distance

题目链接:https://www.nowcoder.com/acm/contest/91/A题意:给两组数据,求把A变成B状态需花费的最小体力。思路:s=s+abs(a[i]-b[i]);a[i+1]...
  • weixin_36416680
  • weixin_36416680
  • 2018-04-15 20:11:56
  • 38

【牛客网】【埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛】L—K序列【动态规划】

题目链接:L—K序列题解:for一遍数组,temp[i]表示:不包括当前for到的点,序列和为i的最长长度。然后for一遍0-k,对dp[ (j+num[i])%k ]进行更新,dp[j]是包括当前点...
  • gymgym1212
  • gymgym1212
  • 2018-04-15 18:46:39
  • 181

【牛客网】【埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛】B—合约数【莫队做法】

题目链接:B—合约数题意:一棵树,有n个节点,从1编号到n。根节点的编号为p。给出每个节点的val[i]值,定义f(i)为以编号i为根节点的子树中(包括根节点),所有val[j]是合数并且是val[i...
  • gymgym1212
  • gymgym1212
  • 2018-04-15 20:33:28
  • 143
收藏助手
不良信息举报
您举报文章:金马五校赛 I : 二数
举报原因:
原因补充:

(最多只允许输入30个字)