|大数运算_竖式除法|L1-046 整除光棍 (20分)

link
refer
在这里插入图片描述

//利用竖除法来 进行大数除法
//不管是111/31还是1111/31又或者是11111111111111/31
//运算的时候都是在前一个光棍数/31的商添加上新增的余数的运算
//一切光棍数/31都可以追溯到111/31的商,即一个大于31的光棍数,在它与31的商的基础上做变化
//都是先111/31,得到18,然后补1,得到181,再除再补1,一直到余数为0

//循环这两个步骤
//1./31
//2.+1

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

int main() {
    int x;
    cin >> x;
    int num=0,cnt=0;//光棍数,位数
    while (x > num) {//得到第一个大于或等于x的光棍数
        num = num * 10 + 1;
        cnt++;
    }
    while (true) {
        cout << num / x;
        num = num % x;
        if (num == 0)break;
        //找到能整除的第一个光棍数了,也就是再前面光棍数/31的基础上,它的余数能/31
        else {
            num = num * 10 + 1;
            cnt++;
        }
    }
    cout <<" "<< cnt;
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值