hdu 5718(Oracle)大数加法
曾经有一位国王,统治着一片未名之地。他膝下有三个女儿。 三个女儿中最年轻漂亮的当属Psyche。她的父亲不确定她未来的命运,于是他来到Delphi神庙求神谕。 神谕可以看作一个不含前导零的正整数n n n。 为了得到真正的预言,他可以将n n n的各个数位重新排列,并将其分成两个不含前导零的正整数。 请你帮助他求出这两个正整数最大的和。如果不存在这样的两个正整数,输出"Uncertain".
用getchar可以一个数字一个地读入,
对于一个十进制数,最多就是10个数字,使用计数可以很方便地进行排序,再用dfs
每十位十位地进行大数相加
写dfs的时候需要注意,把保存状态的临时数组定义在dfs里面
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#define SET(x) memset(x,0,sizeof(x))
using namespace std;
int vis[];
void cacu(int x,int len)
{
if(x==&&len==) return;
if(x!=&&len==) {printf("%d",x);return;}
if(x==&&len!=)
{
while(len)
for(int i=;i>=;i--)
{
if(!vis[i]) continue;
vis[i]--;
printf("%d",i);
len--;
break;
}
return;
}
int g,f,w=,t;
g=x;
t=min(,len);
int num1[];
while(t--)
{
for(int i=;i<;i++)
{
if(!vis[i]) continue;
vis[i]--;
f=i+g;
if(f>) g=;
else g=;
num1[w++]=f%;
len--;
break;
}
}
cacu(g,len);
for(int i=max(w-,); i>=; i--) printf("%d",num1[i]);
}
int main()
{
int T;
scanf("%d",&T);
getchar();
for(; T; T--)
{
char x;
memset(vis,,sizeof(vis));
int len=;
while((x=getchar())&&x!='\n')
{
vis[x-'']++;
len++;
}
if(len<=)
{
puts("Uncertain");
continue;
}
int flag=,minx=;
for(int i=; i<=; i++)
{
if(vis[i]==) flag++;
else if(vis[i]>) flag=;
if(vis[i]) minx=min(minx,i);
}
if(flag<)
{
puts("Uncertain");
continue;
}
vis[minx]--;
cacu(minx,len-);
puts("");
}
return ;
}
hdu 5718(Oracle)大数加法的更多相关文章
- hdu 5718 Oracle 高精度
Oracle Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem ...
- hdu 1002 Java 大数 加法
http://acm.hdu.edu.cn/showproblem.php?pid=1002 PE 由于最后一个CASE不须要输出空行 import java.math.BigInteger; i ...
- HDU 5718 Oracle(高精度)
Time Limit:4000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description There ...
- HDU 5718 Oracle
如果非零的数小于等于1个,则无解.否则有解. 取出一个最小的非零的数作为一个数,剩下的作为一个数,相加即可. #include<cstdio> #include<cstring> ...
- 大数加法~HDU 1002 A + B Problem II
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1002 题意: 数学题,A+B; 思路,这个数非常大,普通加法一定会超时,所以用大数加法.大数加法的基 ...
- hdu 1002 A + B Problem II【大数加法】
题目链接>>>>>> 题目大意:手动模拟大数加法,从而进行两个大数的加法运算 #include <stdio.h> #include <strin ...
- HDU——1715大菲波数(大数加法)
大菲波数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- java实现大数加法、乘法(BigDecimal)
之前写过用vector.string实现大数加法,现在用java的BigDecimal类,代码简单很多.但是在online-judge上,java的代码运行时间和内存大得多. java大数加法:求a+ ...
- Hat's Fibonacci(大数加法+直接暴力)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 hdu1250: Hat's Fibonacci Time Limit: 2000/1000 M ...
随机推荐
- uvm - driver
`ifndef MY_DRIVER__SV `define MY_DRIVER__SV class my_driver extends uvm_driver; function new(string ...
- Spring HTTP下载
(1)HTTP 协议可以在客户端和服务器之间传递任何类型的文件. HTTP协议下载文档到客户端时候, 必须通过响应头Content-Type设置文件类型. 例如: contentType=text/h ...
- python实践——批量统计mongodb数据库的集合大小
#!/usr/bin/env python import os,sys list = [] for i in range(3,50): l = os.popen("/bin/echo 'sh ...
- NSArray转json字符串
func arrayToJson(arr:NSArray) -> String { let jsonData: NSData = try! NSJSONSerialization.dataWit ...
- 在VisualStudio2012环境下安装ArcEngine 10.0
因为ArcEngine10.0默认对应的开发工具为VS2010,在安装了VS2012的情况下安装ArcEngine10.0(注意:我自己的环境为VS2012和ArcEngine10.0,对于其他版本在 ...
- ueditor不自动加P解决方法
百度的Ueditor编辑器出于安全考虑; 用户在html模式下粘贴进去的html文档会自动被去除样式和转义. 虽然安全的,但是非常不方便. 做一下修改把这个功能去掉. 一.打开ueditor.all. ...
- RSA For PHP
最近和一保险公司对接接口,对方要求RSA加密,并给一个*.jks的文件,网上搜索一番均无答案,最后在谷歌上偶然看到一个人说需要转成.pem进行读取,折腾一番直接上代码: /** * 获取RSA加密ke ...
- 激活神器 KMSAuto Net 2015 v1.3.8
KMSAuto Net – Windows 操作系统 KMS 自动激活工具!支持 Windows Vista,7,8,8.1,10, Server 2008,2008 R2,2012,2012 R2, ...
- dictionaryWithContentsOfFile:方法
dictionaryWithContentsOfFile:方法的功能是创建一个字典,将字典中的内容设置为指定文件中的所有内容, 语法:(id)dictionaryWithContentsOffilE. ...
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...