一二三四五 上山打老虎

天梯赛L1-046 整除光棍 (20 分)

链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805084284633088

思路:
思路1:模拟乘法,计算为了使当前位为1,应该乘的数为几,需要搜索,程序编写麻烦;//没写出来
思路2:模拟除法,

思路参考链接:https://www.cnblogs.com/littleLittleTiger/p/10380519.html,图片来源也是此链接,侵删。
思路2代码:

#include<bits/stdc++.h>

using namespace std;
vector<int>a;
int main (){
    int n;
    cin>>n;
    int len=1;
    int t=1;
    while(len<n){
        len=len*10+1;
        t++;
    }
    while(len){
        a.push_back(len/n);
        len%=n;
        if(!len)break;
        len=len*10+1;
        t++;
    }
    for(int i=0;i<a.size();i++)cout<<a[i];
    cout<<" "<<t;
    return 0;
}

略微优化后:

#include<bits/stdc++.h>

using namespace std;
int main (){
    int n;
    cin>>n;
    int len=1;
    int t=1;
    while(len<n){
        len=len*10+1;
        t++;
    }
    while(len){
        cout<<(len/n);
      if(len%n==0)break;
          len%=n;
          len=len*10+1;
          t++;
    }
    cout<<" "<<t;
    return 0;
}
posted @ 2021-04-20 21:46  黒川川  阅读(51)  评论(0)    收藏  举报