hdu_5718_Oracle(大数模拟)
来源:互联网 发布:dnfdll源码 编辑:程序博客网 时间:2024/04/28 04:42
题目连接:hdu_5718_Oracle
题意:
给你一串数,让你分出两个正整数,使其和最大,若不能分出来就输出"Uncertain"
题解:
当时比赛的时候还天真的去搞大数模版,被SB模版坑了100+分钟,以为8点45结束,然后最后都准备弃疗了,然后发现还有15分钟结束,然后下定决心自己写个模拟,10分钟写完就AC了,卧槽,我TM当时为什么要去搞100+min的大数模版,sb大数模版搞的我BC又扣分了。艹!
最开始用的sort来贪心,然后题解说本来是想卡sort的,然后下来改了一下代码,用桶排,跑了这题的第一名
#include<cstdio>#include<cstring>#define F(i,a,b) for(int i=a;i<=b;++i)char a[10000010],b[10000010];int num[10];int main(){ int t; scanf("%d",&t); while(t--){ scanf("%s",a); int len=strlen(a); if(len==1){puts("Uncertain");continue;} len--;memset(num,0,sizeof(num)); F(i,0,len)num[a[i]-'0']++; int cnt=0,a,ed=0; F(i,1,9)cnt+=num[i]; if(cnt<=1){puts("Uncertain");continue;} F(i,1,len)if(num[i]){a=i,num[i]--;break;} b[0]='0'; for(int i=9;i>=0;i--)while(num[i])b[++ed]=i+'0',num[i]--; b[ed]+=a; for(int i=ed;i>0;i--) if(b[i]>'9')b[i]-=10,b[i-1]++;else break; b[ed+1]='\0'; if(b[0]!='0')printf("%s\n",b); else printf("%s\n",b+1); } return 0; }
1 0
- hdu_5718_Oracle(大数模拟)
- 大数相加,模拟计算器
- [ACM]模拟大数加法
- 小型大数模拟
- 字符串模拟大数相加
- hdu 5718 大数模拟
- 模拟大数相加
- 模拟大数相加
- 大数运算-模拟
- 大数相减模拟
- 大数相加模拟
- hdu1047(模拟大数循环相加)
- 大数取余,模拟除法
- HDU 5429 【大数除法模拟】
- 大数运算之字符串模拟
- 大数除法(模拟除)
- poj 1001 -- Exponentiation (大数计算,模拟)
- 求1000!(通过数组模拟大数)
- scala基础10-主构造器/辅助构造器/私有构造器
- 大江大海 —— 海洋法
- 为什么 GNU grep 如此之快?
- python 实现固定格式筛选最大值的代码
- UNIX网络编程笔记(8)—IPv4和IPv6互操作
- hdu_5718_Oracle(大数模拟)
- 巴什博奕
- Phaser运行阶段性并发任务【在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表】
- 二分查找不一定比顺序查找到的效率高
- 《Linux学习》之图形界面和字符界面的切换
- 文本框(JTextField)和文本域(JTextArea)的使用详解
- MVP、MVVM,MVC设计模式的实例分析
- 微软笔试题-Constraint_Checker
- 微软笔试题-Constraint_Checker