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 ...
随机推荐
- iOS打包ipa包
创建证书之类这里就不说了,毕竟我也没有弄过. 我是团队开发,直接给我的p12文件,去开发者中心下载provision并且是distribute的就可以了. 1>.Xcode打包: 注意两个地方都 ...
- RIDE安装遇到的问题及解决方法
1.按照虫师的方法,下载的wxpython3.0 ,启动robotframework-ride,无效,因为版本不一致,所以我又根据终端提示的网址:http://sourceforge.net/proj ...
- Android资源文件简介
Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...
- ROS 新手教程 命令汇总
## 工作环境搭建 查看环境变量的配置: wangsan@wangsan-Y50:~$ export | grep ROS declare -x ROSLISP_PACKAGE_DIRECTORIES ...
- JavaWeb 学习008-今日问题(非空验证尚未解决) 2016-12-2
1. 学生模块list页面 不能正常跳转 说是找不到stuid属性,但是我在entity里面和数据库建表的属性就是stuid:Grade模块代码一样,却可以正常运行 这是什么问题? <c:for ...
- zTree树的模糊搜索
工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请 ...
- Markdown 基本入门使用
http://www.appinn.com/markdown/ markdown快速入门Markdown 常用语法: # 标题 强调:用星号(*)和底线(_)作为标记强调字词的符号,如果你的 * 和 ...
- leetcode解题:Add binary问题
顺便把之前做过的一个简单难度的题也贴上来吧 67. Add Binary Given two binary strings, return their sum (also a binary strin ...
- 基于Xenomai和工控机的实时测控系统的研究
http://www.docin.com/p-1006254643-f6.html
- C# 小工具开发--DeBugHttp
随着RESTful的流行,前后端分离,我们后端开发人员在开发过程中多http相关方法进行测试.这就是这个小工具的初衷. 代码地址:https://github.com/gdoujkzz/DebugHt ...