首页 > 其他分享 >#119. 最大整数 题解

#119. 最大整数 题解

时间:2023-02-25 10:12:42浏览次数:51  
标签:return int 题解 整数 字符串 题目 119

#119. 最大整数 题解

题目传送门

题目知识点

字符串+贪心

题意说明

设有n个正整数(n<=20),将它们连接成一排,组成一个最大的多位整数。(题目简介明了,一看就是出题人懒得写题目背景

问题分析

拿到这道题,首先自然会想到大的字符串应该排在前面,因为如果A与B是两个由数字字符构成的字符串,且A>B,一般情况下有A+B<B+A的情况。如A='121',b='12',则A+B='12112",B+A='12121',所以A+B < B+A。
为了解决这些问题,根据题意引进另一种字符串比较方法,将A+B与B+A相比较,如果前者大于后者,则认为A>B。按这一定义将所有的数字字符串从大到小排序后连接起来所得到的数字字符串即是这个问题的解。排序时先将所有字符串中的最大值选出来存在数组的第一个元素中,再从第二到最后的一个元素中最大的字符串选出来存在第二个元素中,直到最后的两个元素中选出最大的字符串存在数组的倒数第二个元素为止。
请注意:按照本道题目定义的字符串大小有序,即A+B>=B+A,B+C>=C+B一定有A+C>=C+A。

代码+解释

//#119. 最大整数
#include <bits/stdc++.h>//伟大的万能头文件 
using namespace std;
int n;
struct num
{
	int a,b;
}c[21];
int a(int x,int y)//x^y
{
	if(y==0)
	{
		return 1;
	}
	if(y==1)
	{
		return x;
	}
	int z;
	z=a(x,y/2);//这里可以和上面合并写作:int z=a(x,y/2); 
	if(y%2==1)
	{
		return z*z*x;
	}
	else
	{
		return z*z;
	}
}
bool abc(num x,num y)
{
	int w,p;
	w=x.a*y.b+y.a;
	p=y.a*x.b+x.a;
	return w>p;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].a;
		c[i].b=0;
		int x;
		x=c[i].a;//这里可以和上面合并写作:int x=c[i].a;
		while(x)
		{
			x/=10;
			c[i].b++;
		}
		c[i].b=a(10,c[i].b);
	}
	sort(c+1,c+n+1,abc);
	for(int i=1;i<=n;i++)
	{
		cout<<c[i].a;
	}
	return 0;//华丽结束 
}

欢迎大家指出错误

标签:return,int,题解,整数,字符串,题目,119
From: https://www.cnblogs.com/ABBAawa/p/17153833.html

相关文章

  • #160. 「NOIP2004 普及组」不高兴的津津 题解
    #160.「NOIP2004普及组」不高兴的津津题解题目传送门题目知识点枚举题意说明津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为......
  • PAT Basic 1006. 换个格式输出整数
    PATBasic1006.换个格式输出整数1.题目描述:让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超......
  • #373. 「USACO1.1」Friday the Thirteenth 题解
    #373.「USACO1.1」FridaytheThirteenth题解题目传送门题目知识点模拟+数学闰年知识点题意说明写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数......
  • match 题解
    题面题目描述一个匹配模式是由一些小写字母和问号组成的一个字符串。当一个由小写字母组成的字符串\(s\),长度和匹配模式长度相同,并且在对应的每一位都相等或模式串相应......
  • 题解 Codeforces 1746F Kazaee
    题意给定长度为\(n\)的数组\(a\),和\(q\)次操作,支持:给定\(i,x\),修改\(a_i\)为\(x\)给定\(l,r,k\),查询\([l,r]\)中是否每个数的出现次数都是\(k\)的倍数......
  • 题解 LOJ P2393 「JOISC 2017 Day 2」门票安排
    题意咕咕咕。题解这题太神了,无限膜拜p_b_p_b,搬运一波题解。首先考虑二分。题意等价于选一些区间进行反转。首先注意到反转的区间两两有交,不然不反转一定更优。设反转......
  • P8822 [传智杯#3 初赛] 课程报名 题解
    题目传送门题目大意有一种课程,初始定价为\(v\)元;每报名\(m\)个学员,课程的定价就要提升\(a\)元,一共有\(n\)个学员报名。解题思路因为一共有\(n\)个学员报名,所......
  • P8717 [蓝桥杯 2020 省 AB2] 成绩分析 题解
    题目传送门题目大意计算\(n\)个人考试的最高分、最低分和平均分。解题思路输入\(n\)个人成绩的同时,计算最大值,最小值和总数。再将总数除以\(n\)算出平均值并保......
  • AtCoder Beginner Contest 285 A-F 题解
    比赛链接A-EdgeChecker2判断y==2x||y==2x+1即可。点击查看代码#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;inta......
  • AtCoder Beginner Contest 283 A-F 题解
    A-Power快速幂板子点击查看代码#include<cstdio>#include<algorithm>usingnamespacestd;#defineintlonglongintn,m;intqpow(inta,intb){ intr......