(~ ̄▽ ̄)~*

这道题涉及高精度除法,模板如下:

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#贪心+高精度除法的更多相关文章

  1. poj 2325 Persistent Numbers (贪心+高精度)

    把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出. 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次. /****************************** ...

  2. poj 2325 Persistent Numbers

    简单的贪心和高精度运算,主要还是要读懂题. #include"iostream" #include"stdio.h" #include"string& ...

  3. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  4. [codevs3118]高精度除法<高精度>

    题目链接:http://codevs.cn/problem/3118/ 为了做一道名为国王游戏的贪心,我跑来学习了高精度除法....相传,高精度除法是高精度四个基本运算最难的 但事实上,高精度除法可以 ...

  5. POJ - 3652 Persistent Bits

    “模拟”类型,题型容易,使用bitset库对二进制逐位操作,初始化.十进制转二进制(unsigned int).位操作. POJ - 3652 Persistent Bits Time Limit:  ...

  6. 中石油-高精度除法-java版

    问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec  内存限制: 512 MB提交: 19  解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法 ...

  7. 使用java求高精度除法,要求保留N位小数

    题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 import java.math.BigDecimal; import java.util.Scanner; pu ...

  8. POJ 3190 Stall Reservations贪心

    POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...

  9. POJ 2392 Space Elevator(贪心+多重背包)

    POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...

随机推荐

  1. HostOnly模式下的Centos克隆虚拟机+配置固定ip

    首先在你想克隆的虚拟机上右击,选择管理下的克隆 让我们骚等一会~ ok,现在开机,这个时候是没有ip的 来修改一个文件 删掉红框中的内容,把箭头指的eth1改为eth0 在来修改一个文件 删掉红框的内 ...

  2. 通过Windows常见性能计数器分析服务器性能瓶颈

    转载 http://www.cnblogs./junzhongxu/archive/2011/02/15/1954889.html 监测对象 Ø System(系统) l %Total Process ...

  3. Java中的Class类

    Class 类是在Java语言中定义一个特定类的实现.一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类.Class类的对象用于表示当前运行的 Java 应用程序中的类和接口. ...

  4. Ajax中参数带有html格式的 传入后台保存【二】

    KindEditor.ready(function (K) { //编辑器插件 window.editor1 = K.create('#ctjs', { uploadJson: '/Hotelgl/U ...

  5. S.O.L.I.D五大原则之单一职责SRP

    转自 : 汤姆大叔的blog Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单 ...

  6. c#中,委托Func的简单实践

    c# 委托Func的简单实践最近才真正的接触委托,所以针对Func类型的委托,做一个实践练习. 首先说一些我对委托的初级理解:"就是把方法当做参数,传进委托方法里". 我平时用到的 ...

  7. 在MVC里使用 HttpContext.Response输出内容

    public ActionResult About() { byte[] ss = System.Text.Encoding.UTF8.GetBytes("111122"); Ht ...

  8. 10s后自动跳转

    <div class="jf_register"> <h2>您好,欢迎光临<fmt:message key="b2cShowName&quo ...

  9. Java开发工具

    总的来看Java的开发工具无非由两个部分构成,一个JDK一个是IDE,无论JDK是不可变的,IDE则是哪个用着舒服就用哪个. 1JDK 1.1简介 JDK是 Java 语言的软件开发工具包(SDK), ...

  10. wcf测试工具

    WCF测试工具-WcfStorm WCF测试工具-WcfStorm  http://www.wcfstorm.com/wcf/home.aspx WcfStorm is a dead-simple, ...