天梯赛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;
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号