【高精度】高精度数除以低精度数I

问题 G: 【高精度】高精度数除以低精度数I

时间限制: 1 Sec  内存限制: 512 MB
提交: 173  解决: 71
[提交] [状态] [讨论版] [命题人:]

题目描述

修罗王聚集了庞大的暗元素以施展隐匿魔法,该魔法施展后将对其周边的时空产生隐匿效果,当然,隐匿的效果好坏取决于是否将暗元素平均地分配在其周边时空,显然这涉及高精度除法的编程。考虑到邪狼的理解能力,修罗王不得不先将问题简化为:输入一被除数(位数≤5000),输入一除数(整型数据范围内),输出整数商,忽略小数。

输入

共两行,第1行为一个数字字符串,即被除数,第2行为一个整数,即除数。

输出

输出整数商,忽略小数。

样例输入

20
5

样例输出

4

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string Multiply(string s,int x){
    reverse(s.begin(),s.end());
    int cmp=0;
    for(int i=0;i<s.size();i++){
        cmp=(s[i]-‘0‘)*x+cmp;
        s[i]=(cmp%10+‘0‘);
        cmp/=10;
    }
    while(cmp){
        s+=(cmp%10+‘0‘);
        cmp/=10;
    }
    reverse(s.begin(),s.end());
    return s;
}
string Except(string s,int x){
    int cmp=0,ok=0;
    string ans="";
    for(int i=0;i<s.size();i++){
        cmp=(cmp*10+s[i]-‘0‘);
        if(cmp>=x){
            ok=1;
            ans+=(cmp/x+‘0‘);
            cmp%=x;
        }
        else if(ok==1)ans+=‘0‘;
    }
    return ans.empty()?"0":ans;
}
int main(int argc, char *argv[]) {
    string a;
    int b;
    cin>>a>>b;
    cout<<Except(a,b)<<endl;
}

原文地址:https://www.cnblogs.com/Rhythm-/p/9348895.html

时间: 2024-08-29 18:03:20

【高精度】高精度数除以低精度数I的相关文章

高精度计算 除法 高精除以低精

高精度就是很长很长的数字 低精就是可以直接存在基本类型(int short double...)的数字 两个正整数,一个是高精度,一个是低精度,求整除部分,不求余数.//其实就算要负数也很好解决 //两个正整数,高精度除以低精度,只求整除部分,不求余数 #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main() { char a1[100]; int a[

卡特兰数,高精度卡特兰数

简介:卡特兰数是组合数学中经常出现的一个数列. 个人觉得无论是递推公式还是代表的含义都比斐波那契数列难理解一些. 递推公式: 应用: 1.Cn表示长度2n的dyck word的个数.Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数.以下为长度为6的dyck words XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY 分析:对于n个X,n个Y的排列来说一共有C(n,2n)种,还要排除其中不符合要求的排列.不符合条件的排列对于某

HDU 3723 Delta Wave (高精度+calelan数)

题意:给定一个图,问你只能向上向下,或者平着走,有多少种方法可以走到最后一个格. 析:首先先考虑,如果没有平的情况就是calelan数了,现在有平的情况,那么就枚举呗,因为数很大,所以要用高精度. 答案应该是sum(C(n, 2*i)*C(n, i)/(i+1)) = a1 + a2 + a3 + ....,然后可以再化简一下,成为一个递推式ai = ai-1 * (n-2*i+1)*(n-2*i+2)/(k*(k+1)): 这次用记事本写的,然后没有测试,直接交的,虽然CE了一发,但还是挺好的

为什么卖家版千牛 量子恒道的访客数不一致(精华版)

运营了这么久的淘宝C店的店铺,发现最近新版的千牛工作平台,访客数据和量子恒道的数据不一致,分析如下: 很有可能是统计的方式不一样,举例如下,千牛的登陆界面显示的访客数如下: 点击量子恒道,看到的数据也是访客53,截图如下: 此时这里的数据和千牛界面是一样的,不过在此界面点击流浪概况的时候,访客就变成了27,截图如下: 这就说明两个统计的方法是完全不一样的,这里普及有点,很多访客都是按照IP地址统计的,比如你的Ip是172.23.23.23,那么你访问一个店铺,无论你刷新多少次都是统计成一个访客,

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

问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec  内存限制: 512 MB提交: 19  解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法,该魔法施展后将对其周边的时空产生隐匿效果,当然,隐匿的效果好坏取决于是否将暗元素平均地分配在其周边时空,显然这涉及高精度除法的编程.考虑到邪狼的理解能力,修罗王不得不先将问题简化为:输入一被除数(位数≤5000),输入一除数(整型数据范围内),输出整数商,忽略小数. 输入 共两行,第1行为一个数字

[贪心][高精度][NOIP]国王游戏

题目梗概 有n个大臣,他们可以拿到他们之前所有人左手数的乘积除以他的右手,问是否能通过调换位置来使拿钱最多的大臣拿的钱最少. 思考 贪心证明: 设相邻的两个人$i, i + 1$.设$A[i] \times B[i] \leqslant  A[i + 1] B[i + 1]$,i之前所有人的左手乘积为S. 则,$ans1 = max \left (\frac{S}{B[i]} , \frac{S}{A[i] \times B[i+1]}  \right )$ 若交换 $ans2 = max \l

【算法】高精四则运算

高精度加法 #include<iostream> #include<cstring> #include<cstdio> using namespace std; char a[200],b[200]; int a1[200],b1[200],c1[200]; int l1,l2,l3; int main() { scanf("%s",a); scanf("%s",b); l1=strlen(a); l2=strlen(b); fo

秘制 CSPS 模板

不定期更细中...... 声明1:由于js的问题导致VIEW CODE按钮只能点"I"附近才能展开代码 声明2:为了排版的美观,所有的解释以及需要留意的地方我都放在代码中了 声明3:以下所有代码均是已经AC的,请各位放心食用 STL类 堆 #include<bits/stdc++.h> using namespace std; int n; priority_queue<int,vector<int>,greater<int> >dui;

bzoj4807 車

题目大意: Description 众所周知,車是中国象棋中最厉害的一子之一,它能吃到同一行或同一列中的其他棋子.車跟車显然不能在一起打 起来,于是rly一天又借来了许多许多的車在棋盘上摆了起来--他想知道,在N×M的矩形方格中摆最多个数的車 使其互不吃到的情况下方案数有几种.但是,由于上次摆炮摆得实在太累,他为了偷懒,打算增加一个条件:对于 任何一个車A,如果有其他一个車B在它的上面(車B行号小于車A),那么車A必须在車B的右边(車A列号大于車B) . 棋子都是相同的. Input 一行,两个