首页 > 其他分享 >P8482 Number

P8482 Number

时间:2023-09-08 09:44:05浏览次数:44  
标签:s3 乘积 int Number -- P8482 字符串 string

题目传送门

思路提供

首先我们可以从题目给出的部分分入手,先拿到 $50$ 分,这个我们可以通过贪心的手段保证两个数字的总和相同(因为只要保持相同就可以使得两个数的乘积最大),所以每次将数字加在总分较少的字符串上就可以保证两个字符串表示的数字的乘积最大,如果出现两个两个字符串内所有数字的总和相同的情况,就默认加在第一个的字符串里,这样就可以列举出两个保证最大乘积的字符串,而我们看到题目中保证会有一个 $0$ 的出现,而我们要使乘积不变,而改变两个数,所以我们考虑一个 $0$(可以拆成一个 $2$ 和一个 $5$ 的乘积)这样的话,我们只要去掉一个末尾的 $0$(即除去一个 $10$),再将剩下的数一个乘上 $2$,一个乘上 $5$ 就能保证总乘积不变,而考虑本题的数据范围过大,所以我们需要加上一个高精乘低精的高精度运算即可(可借鉴模板题)。

AC code

#include<bits/stdc++.h>
using namespace std;
string ans1,ans2;//分别记录答案,string十分方便
int num[15];
int tot,a[100000005];
int al[10000005],b[10000005],c[10000005];//数组要开大一些
void sh(string x,int y){//高精乘低精的模板
	memset(a,0,sizeof(al));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	int s11=x.length();
   	for(int i=0;i<s11;i++) 
	   al[i]=x[s11-i-1]-'0';
   	for(int i=0;i<s11;i++){
   		c[i]=al[i]*y;	
   	}
   	int s3=s11+1;
	for(int i=0;i<s3;i++){
		c[i+1]+=c[i]/10;
		c[i]%=10;
	}
	for(;!c[s3]&&s3>0;){
		s3--;
	}
    while(c[s3]==0&&s3>=1) s3--;//去除前导零
    for(int j=s3;j>=0;j--){
        cout<<c[j];
	}
    cout<<endl;
}
signed main(){
	for(int i=0;i<=9;i++){
		cin>>num[i];
		for(int j=1;j<=num[i];j++){
			tot++;
			a[tot]=i;
		}
	}
	ans1+=a[tot]+'0';
	ans2+=a[tot-1]+'0';//各自先加上一个数
	int tot1=a[tot],tot2=a[tot-1],flag=1;
	if(tot1==tot2) flag=0;
	for(int i=tot-2;i>1;i--){
		if(i-1>1){
			if(tot1<tot2){
				ans1+=a[i]+'0';
				ans2+=a[i-1]+'0';
			}
			else if(tot1>tot2){
				ans1+=a[i-1]+'0';
				ans2+=a[i]+'0';
			}//考虑总分不同
			else{
				if(flag==0 && a[i]!=a[i-1]){
					tot1=a[i];
					tot2=a[i-1];
					flag=1;
				}//相同的情况进行考虑
				ans1+=a[i]+'0';
				ans2+=a[i-1]+'0';
			}
			i--;
		}
		else{
			if(tot1<=tot2){
				ans1+=a[i]+'0';
				tot1+=a[i];
			}
			else{
				ans2+=a[i]+'0';
				tot2+=a[i];
			}
		}
	}
   sh(ans1,2);
	sh(ans2,5);//最后的输出
	return 0;
}

标签:s3,乘积,int,Number,--,P8482,字符串,string
From: https://www.cnblogs.com/is-02/p/17686684.html

相关文章

  • 关于“ora-01483:DATE或NUMBER赋值变量的长度无效”的问题
    在建的表结构中有一个字段类型为varchar2(4000),在页面输入的文字并不多但是后台却报:关于“ora-01483:DATE或NUMBER赋值变量的长度无效”错误网上查了一下,最后总结自己可能的原因是:首先说一下我的那个环境:数据库服务器是oracle,采用hibernate方式保存,页面表单采用的多行文本域,整个项目......
  • 1521A - Nastia and Nearly Good Numbers
    A.NastiaandNearlyGoodNumbershttps://codeforces.com/problemset/problem/1521/A"""思路:1.就是普通的打印,NO的情况是只有b=1的时候才会出现,其他的都是YES,如果不想再继续分情况就把a*b放在中间做y,或者做x也可,避免(b-1)=1,最后要x+y=z"""forlinein[*open(0)......
  • row_number函数的不稳定性
    本文分享自华为云社区《row_number函数的不稳定性》,作者:nullptr_。row_number为窗口函数,用来为各组内数据生成连续排号基础用法postgres=#selectid,name,age,row_number()over()fromtest;id|name|age|row_number----+------+-----+------------2|张三|......
  • number
    NumberNumber对象是经过封装的能让你处理数字值的对象。#实例方法#toFixed(fractionDigits?)使用定点表示法来格式化一个数值。参数参数名参数类型是否必填描述fractionDigitsnumber否小数点后数字的个数;介于0到20(包括)之间,实现环境可能支持更大范围。如果......
  • 连接redis后 ,报错: ERR wrong number of arguments for ‘hset‘ command“怎么解决
    原因:ERRwrongnumberofargumentsfor‘hset‘command触发代码 解决方法:可能是java不匹配我本地3.2版本的redis,我换一个更大版本的redis就解决了 ......
  • bad version number in .class file
    用eclipse3.3进行编译的时候出现了badversionnumberin.classfile错误。原来我用的是1.5的JDK,但是eclipse默认的编译用的是6.0级别。设置一下就可以了。java->compiler->JDKcompliance修改一下compilercompliancelevel就可以了......
  • CF1423K Lonely Numbers
    思路因为对于\(\gcd(a,b)\),\(\fraca{\gcd(a,b)}\),\(\fracb{\gcd(a,b)}\)中\(a\)和\(b\)是等价的,可以交换的。所以我们先令\(a>b\)。令\(\gcd(a,b)=d\),因为\(\fraca{\gcd(a,b)}\)有除法,所以我们应该想办法去除除法,就同乘以一个\(d\),即\(d^2\),\(a\),\(b\)三条边。......
  • P7 UVA11481 Arrange the Numbers
    UVA11481ArrangetheNumbers组合数问题。做法貌似很多,显然在前\(m\)个数中选\(k\)个,即\(C(m,k)\),然后后面有\(m-k\)个数需要保证不放在自己的位置上,所以后面整体是一个禁位问题,貌似可以用棋盘多项式去推禁位公式,但是暂时不会。不过还有另外一种思路,就是对于后面的\(n-......
  • mybatis 报错:Cause: java.lang.NumberFormatException: For input string: "java"
    1、所错图示:2、为什么包这样的错误?在if查询条件的逻辑没有错,其实在代码转换解析时,自动转换类型了,是代码在转换解析时异常。<!--where与if配合使用--><selectid="selectBlogIfWhere"resultType="blog"parameterType="blog"><includerefid="commBlog"></in......
  • el-input-number 手动输入无法触发校验
    前情提要今天终于找到了鬼打墙之谁改了我的代码中的鬼,庆贺:-)鬼找到了:测试对象不一致请输入0-1000间的整数这则校验一直都有,不是改bug期间提交的,因此代码提交记录是正常的。 { pattern:/^([0-9][0-9]{0,2}|1000)$/, message:"请输入0-1000间的整数", tri......