整除光棍(天梯)
题目: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; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步