博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
K - Kia's Calculation (贪心)
阅读量:6431 次
发布时间:2019-06-23

本文共 2977 字,大约阅读时间需要 9 分钟。

Kia's Calculation

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 3902    Accepted Submission(s): 784

Problem Description
Doctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is so careless and alway forget to carry a number when the sum of two digits exceeds 9. For example, when she calculates 4567+5789, she will get 9246, and for 1234+9876, she will get 0. Ghee is angry about this, and makes a hard problem for her to solve:
Now Kia has two integers A and B, she can shuffle the digits in each number as she like, but leading zeros are not allowed. That is to say, for A = 11024, she can rearrange the number as 10124, or 41102, or many other, but 02411 is not allowed.
After she shuffles A and B, she will add them together, in her own way. And what will be the maximum possible sum of A "+" B ?
 

 

Input
The rst line has a number T (T <= 25) , indicating the number of test cases.
For each test case there are two lines. First line has the number A, and the second line has the number B.
Both A and B will have same number of digits, which is no larger than 10
6, and without leading zeros.
 

 

Output
For test case X, output "Case #X: " first, then output the maximum possible sum without leading zeros.
 

 

Sample Input
1 5958 3036
 

 

Sample Output
Case #1: 8984
 

 

Source
 

 

Recommend
zhuyuanchen520
/** @Author: lyuc* @Date:   2017-04-28 19:34:17* @Last Modified by:   lyuc* @Last Modified time: 2017-04-28 20:19:20*//*题意:定义一种加法法则,两个整数相加的时候不用进位,现在给你两个位数相等的整数,用着每个整数任意组合,让你构造出 *    两个数的和最大。 * *思路:先统计每个数中的0-9个出现了多少次,然后最高位特殊处理,剩下的都构造最大的数 */#include 
#define MAXN 1000005using namespace std;int t;char s1[MAXN],s2[MAXN];int num[MAXN];//用来存放数字int vis[2][10];void init(){ memset(vis,0,sizeof vis); memset(num,'\0',sizeof num);}int main(){ // freopen("in.txt","r",stdin); scanf("%d",&t); for(int ca=1;ca<=t;ca++){ printf("Case #%d: ",ca); init(); scanf("%s%s",s1,s2); int n=strlen(s1); if(n==1){
//如果只有一位的话,直接输出就可以了 printf("%d\n",(s1[0]-'0'+s2[0]-'0')%10); continue; } //统计每个数字出现的次数 for(int i=0;i
=0;i--){
//i枚举的是给最后的和的第res位的数,因为要尽量找大的嘛,所以从9开始枚举 bool flag=false; for(int j=0;j<=9;j++){ if(vis[0][j]==0) continue;//如果第一个数中没有出现的数字那么根本不需要考虑了 int ok=(i+10-j)%10;//ok表示和j(第一个数中出现的数字)组成i的在第二个数中出现的数字 if(res==0&&(j==0||ok==0)) continue;//如果是res==0(当前枚举的是最高位,那么就不能出现前导零) if(vis[1][ok]){
//如果ok在第二个数中还有那么就可以构造了 vis[0][j]--; vis[1][ok]--; num[res]=i; flag=true; break; } } if(flag==true) break; } } int res=0; while(res

 

转载于:https://www.cnblogs.com/wuwangchuxin0924/p/6783166.html

你可能感兴趣的文章
[wp7软件]wp7~~各种视频播放器下载大全
查看>>
Java工程师必知之事 —— 如何定义自己的职业路线?
查看>>
Java中对象并不是都在堆上分配内存的。
查看>>
代码质量与规范,那些年你欠下的技术债
查看>>
计算机程序的思维逻辑 (19) - 接口的本质
查看>>
自定义控件(二) 从源码分析事件分发机制
查看>>
CVE-2014-4113漏洞利用过程分析
查看>>
解密MSSQL链接数据库的密码
查看>>
Glide-源码详解
查看>>
你敢在post和get上刁难我,就别怪我装逼了
查看>>
直播 3.0 时代,在线教育行业的裂变和重构
查看>>
SpringBoot使用Nacos服务发现
查看>>
2017双11技术揭秘—阿里巴巴数据库技术架构演进
查看>>
我的友情链接
查看>>
Spring框架 - AOP使用
查看>>
Ansible常用内置属性
查看>>
C#使用正则表达式校验邮箱
查看>>
Linux自动清理N天前目录文件
查看>>
方便 快捷 安全的EVO邮件服务器
查看>>
bash的快捷键
查看>>