天梯赛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号