整除光棍(天梯)

题目:https://www.patest.cn/contests/gplt/L1-046

模拟除法来解决问题,解决数据过大的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int n;
    cin>>n;
    int i = 0;
    int sum = 1;
    int res[10000];  //存储最后的商,开这么大的数组,防止有的过大,造成溢出
    while(true){  // 模拟除法
        if(sum < n){
            sum = sum * 10 + 1;
            res[i] = 0;
        }
        else
        {
            res[i] = sum / n;
            if(sum%n == 0)
                break;
            sum = (sum % n)*10 + 1;
             
        }
        i++;
    }
    int flag = 0;  // 找到第一个不为零的数字
    for(int j = 0;j<=i;j++){
        if(res[j]!=0){
            flag = j;
            break;
        }
    }
    for(int j = flag;j<=i;j++){
        cout<<res[j];
    }
    cout<<" "<<i+1;  //i+1表示光棍的位数
    return 0;
}

  

posted @   贝加飞  阅读(221)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示