模拟除法

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int len=0;
    int p=0;
    char str[1001];
    int m = 1;
    memset(str, ‘\0‘, sizeof(str));
    while(true)
    {
        if(p||m / n)
        {
            str[p++] = ‘0‘ + m / n;  //将得到的商放进字符串

        }
        len++;
        m = m % n;  //对除数求余,拿到下一次需要用的被除数,如果为0,说明已经整出,可以试着用笔进行除法运算,如11111111111除32来观察一下,很好理解
        if(m%n==0)
        {
            cout << str << " " << len;
                break;
        }
        m = m * 10 + 1;
    }
    return 0;
}
时间: 2024-10-04 12:19:23

模拟除法的相关文章

循环小数——模拟除法

题目 输入整数a和b(0 ≤ a ≤ 3000,1 ≤ b ≤ 3000),输出a / b的循环小数表示以及循环节的长度.例如a = 5,b = 43,小数表示为0.(116279069767441860465),循环节的长度为21. 解题思路 用模拟除法,并用数组模拟每次存储每次相除的结果,每除一次与前面的所有元素比较一次,如果与数组中某一元素相等,即可停止循环,因为此时循环节已经找到,并用变量m.n分别记录循环节的起始和终止位置,然后就是按规定的格式输出. 代码实现 1 #include<s

HDU ACM 2522 A simple problem 模拟除法

分析:在除的过程中,当出现相同余数时即出现循环节. #include<iostream> using namespace std; bool h[100002]; void div(int x) { int t; memset(h,false,x*sizeof(h[0])+1); h[1]=true; t=1; while(t) { t=t*10; cout<<t/x; t=t%x; if(h[t]) //再次出现相同余数,表示出现循环节 break; h[t]=true; } }

【练习赛2补题】poj 2325 Persistent Numbers 【高精度除法+贪心】

Description The multiplicative persistence of a number is defined by Neil Sloane (Neil J.A. Sloane in The Persistence of a Number published in Journal of Recreational Mathematics 6, 1973, pp. 97-98., 1973) as the number of steps to reach a one-digit

团体程序设计天梯赛 L2-018. 多项式A除以B(模拟)

题意:给你A,B两个多项式,问你A/B的值:注意多项式给你的是每个式子的指数与系数:保留到一位小数,如果出现系数为0(保留后也是)的情况,请不要输出它,如果没有非系数为0的情况就输出特殊 题解:多项式类似于"a*x^4+b*x^3+c*x^2+d*x^1+e*x^0"的形式,两个多项式除法就是模拟除法做 现在被除数最大指数的系数.被 除数最大指数的系数除以.结果就是商的系数,两个指数的差就是商的指数 然后枚举除数每一位乘以这个值来被 被除数减去,最后找被除数后一个位置继续循环,直到被除

【算法:1】高精度除法

高精度除法,我用高精度减法来模拟 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> using namespace std; inline int read() { int x=0,f=1;char ch=getchar();

2737 大整数除法

题目来源:http://bailian.openjudge.cn/practice/2737/描述求两个大的正整数相除的商.输入第1行是被除数,第2行是除数.每个数均不超过100位.输出一行,相应的商的整数部分样例输入237624样例输出99题意描述:计算位数不超过200的两个大整数的商解题思路:总体用减法来模拟除法,当然为了让模拟更高效采用一定的方法. 先将被除数和除数分别存进一维字符数组str1和str2如果被除数的长度小于除数的,直接输出0逆置str1和str2存进数组a和b调用jiand

hdu 1261 排列组合&amp;&amp;大数除法

唉  不知道第一次发什么神经 第一次把t定义成char 型的了 小数还对 大数就不多了...找了半个小时才找到  以后要细心了 求大数 一定是用字符串保存,,long long 肯定溢出. 具体思路就是把所有字符个数加起来的阶乘n!除以各个字符出现的个数的阶乘. #include <stdio.h> #include <string.h> #define num 1000 int main() { char str[num]; long long n,x,count,j,i,q,s

高精度除法(大数相除)

高精度除法(高除高) #include<cmath> #include<iostream> #include<cstdio> #include<cstring> #include<string> using namespace std; int a[101],b[101],c[101],d,i; void shuru(int a[]) { string s; cin>>s; //读入字符串 a[0]=s.length(); //a[0

高精度加法,减法,乘法,除法

主要分为5个方面来开展: 1.高精度数的存储,我是按照<晴神宝典>的用一个包含int数组和表示长度int的struct bign来存储数据,当然了,为了方便,我们存储方向和我们正常的数字大小排列方向相反,我们是数组低位存放阶数小的数字,这样方便之后的计算 2.加法,加法应该就是直接模拟,记得用一个carry来存放进位就行了,其他的没有什么好说 2.减法,减法的话就是多了个向高处借位,既高一位的地方-1,自己位置+10,最后要消除前导0 4.乘法,乘法也是简单模拟,两个数的每一位和每一位相乘,然