POJ 2325 Persistent Numbers#贪心+高精度除法
这道题涉及高精度除法,模板如下:
char s[1005];
char division[1005];//存储进行高精度除法的数据 bool bignum_div(int x)
{
int tot=0,num=0;
for(int i=0;s[i];i++)
{
num=num*10+s[i]-'0';
division[tot++]=num/x+'0';
num%=x;
}
division[tot]='\0';//利于进行strcpy()
if(num==0) //有适合的除数
{
int i=0;
while(division[i]=='0')
i++;
strcpy(s,division+i);//比如49->07,那么下一轮s就变成7,多余的i个0都除掉
return true;
}
else return false;
}
题目代码:
//贪心:除数从9到2来找就可以了,因为大于9的说明不存在
//input为个位数时,特殊处理即可
/*******高精度除法 bignum_div(x)***************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; char s[1005];
char division[1005];//存储进行高精度除法的数据
int res[1005];//存储output数据 bool bignum_div(int x)
{
int tot=0,num=0;
for(int i=0;s[i];i++)
{
num=num*10+s[i]-'0';
division[tot++]=num/x+'0';
num%=x;
}
division[tot]='\0';//利于进行strcpy()
if(num==0) //有适合的除数
{
int i=0;
while(division[i]=='0')
i++;
strcpy(s,division+i);//比如49->07,那么下一轮s就变成7,多余的i个0都除掉
return true;
}
else return false;
} int main()
{
while(~scanf("%s",s))
{
if(s[0]=='-') break; int cnt=0;
bool ok,no;
no=false;
int len=strlen(s);
if(len<2)
{
printf("1%s\n",s);
continue;
} while(1)
{
ok=false;
for(int i=9;i>1;i--)
{
if(bignum_div(i))
{
ok=true;
res[cnt++]=i;
break;
}
}
if(!ok)
{
if(strlen(s)>1)//找不到适合的除数,s又是两位数以上,如51=3x17,17为两位数,故51没有满足条件的答案
no=true;
break;
}
}
if(no)
printf("There is no such number.\n");
else
{
for(int i=cnt-1;i>=0;i--)
printf("%d",res[i]);
printf("\n");
}
}
return 0;
}
POJ 2325 Persistent Numbers#贪心+高精度除法的更多相关文章
- poj 2325 Persistent Numbers (贪心+高精度)
把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出. 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次. /****************************** ...
- poj 2325 Persistent Numbers
简单的贪心和高精度运算,主要还是要读懂题. #include"iostream" #include"stdio.h" #include"string& ...
- [noip2012]国王游戏<贪心+高精度>
题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...
- [codevs3118]高精度除法<高精度>
题目链接:http://codevs.cn/problem/3118/ 为了做一道名为国王游戏的贪心,我跑来学习了高精度除法....相传,高精度除法是高精度四个基本运算最难的 但事实上,高精度除法可以 ...
- POJ - 3652 Persistent Bits
“模拟”类型,题型容易,使用bitset库对二进制逐位操作,初始化.十进制转二进制(unsigned int).位操作. POJ - 3652 Persistent Bits Time Limit: ...
- 中石油-高精度除法-java版
问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec 内存限制: 512 MB提交: 19 解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法 ...
- 使用java求高精度除法,要求保留N位小数
题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 import java.math.BigDecimal; import java.util.Scanner; pu ...
- POJ 3190 Stall Reservations贪心
POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...
- POJ 2392 Space Elevator(贪心+多重背包)
POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...
随机推荐
- SUSElinux的pam模块中$ISA变量的作用
目的:限制非wheel用户切换至root 方法:vi /etc/pam.d/su文件,增加如下两行 auth sufficient /lib/security/pam_rootok.soauth re ...
- Openjudge-NOI题库-旅行-数论
题目描述 Description 转眼毕业了,曾经朝夕相处的同学们不得不都各奔东西,大家都去了不同的城市开始新的生活.在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于 ...
- 第33届 MPD软件工作坊(南京站)有哪些亮点值得我们参加?
MPD软件工作坊由msup2010年创办,自创办以来,共吸引了万名的软件从业者到场参与.第33届 MPD软件工作坊(南京站)将于12月17-18日在南京召开,大会报名平台:活动家! 快捷报名通道:ht ...
- [UWP小白日记-2]SQLite数据库DOME
数据库说简单点就是增删改查,但是对新手来说也是要爆肝的.作为一个新手爆肝无数次啊, 血的教训啊现在UWP的教程又少,说多了都是泪.留下来免得以后又爆肝.还有:一定要写注释!一定要写注释!一定要写注释! ...
- db2 备份还原
一.导入导出 ixf: db2 export to /tmp/xxx.csv of ixf lobs to . xml to . modified by codepage=1208 "sel ...
- vue实例生命周期
实例生命周期 var vm = new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log('a i ...
- 第1章 PHP快速入门
1.最好使用<?php ?> 即XML风格的PHP标记: 2.echo语句:将传递给其自身的字符串打印到浏览器: 3.注释:①C风格的多行注释/* */ ②C++风格的单行注释// ...
- 字符串---分割成数组(str_split ),算出一个字符串中出现最多的字符, 学校中最多的姓名
split 分割separate分开 little 小的 echo '<meta http-equiv="Content-type" content="text/h ...
- 特性(Attributes)
用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体相关联后,即可在运行时用反射技术查询特性. 例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该 ...
- Python 智能处理方向的工具
机器视觉类:OpenCV. 自然语言处理:NLTK, jieba(Python中文分词组件),HanLP, FudanNLP, NLPIR, http://tm.itc.ntnu.edu.tw/CNL ...