解题思路:
因为相除时每一次的余数要小于除数,即余数的个数是有限的.
两个整数相除,商要么是整数,要么有限小数,要么是无限(循环)小数.
注意事项:
找出循环部分
参考代码:
#include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<vector> #include<unordered_map> #define F(i,j,k) for(int i = j; i < k; ++i) #define ed <<endl #define kg <<' '<< #define ct cout<< using namespace std; int m,n,k; vector<int> ans; unordered_map<int,int> mp; void solve(){ int i,begin=-1;ans.push_back(0); for(i = 1; i < k + 3; ++i){ m*=10; if(mp[m]){ begin = mp[m];//开始循环就退出,记录循环起点 break; } ans.push_back(m/n); mp[m] = i;//ct k kg i kg m kg ans[i] ed; m%=n; } int p; int len = i - begin;//循环部分的长度 F(j,0,3){ p = k+j;//要输出第几个数 if(p<ans.size()){//没在循环内 ct ans[p]; }else{//在循环内 p-=begin; ct ans[p%len + begin]; } } } int main(){ cin>>m>>n>>k; m%=n; solve(); }
0.0分
1 人评分
点我有惊喜!你懂得!浏览:4110 |
校门外的树 (C语言代码)浏览:1127 |
C语言程序设计教程(第三版)课后习题12.5 (C语言代码)浏览:834 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:472 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:698 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:745 |
图形输出 (C语言代码)浏览:1388 |
蚂蚁感冒 (C语言代码)浏览:778 |
1162答案错误,为什么浏览:647 |
C二级辅导-分段函数 (C语言代码)浏览:766 |