假期训练—— Repeating Decimals UVA - 202 模拟
来源:互联网 发布:控制台运行java程序 编辑:程序博客网 时间:2024/05/01 18:27
题目连接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=138
解题思路:
模拟除法,在每一次进行除法运算时都会有一个被除数,如果两次被除数相同,则遇到一个循环节,
通过判断其出现位置,解题。
代码如下:
#include <iostream> #include <cstdio>#include <cstdlib>#include <cmath>#include <iomanip>#include <algorithm>#include <climits>#include <cstring>#include <string>#include <set>#include <map>#include <queue>#include <stack>#include <vector>#include <list>#define rep(i,m,n) for(int i=m;i<=n;i++)#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)const int inf_int = 2e9;const long long inf_ll = 2e18;#define inf_add 0x3f3f3f3f#define mod 1000000007#define pb push_back#define mp make_pair#define fi first#define se second#define pi acos(-1.0)#define pii pair<int,int>#define Lson L, mid, rt<<1#define Rson mid+1, R, rt<<1|1const int maxn=5e2+10;using namespace std;typedef long long ll;typedef unsigned long long ull; inline int read(){int ra,fh;char rx;rx=getchar(),ra=0,fh=1;while((rx<'0'||rx>'9')&&rx!='-')rx=getchar();if(rx=='-')fh=-1,rx=getchar();while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra*fh;}//#pragma comment(linker, "/STACK:102400000,102400000")ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}typedef vector<int> vi;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};const int N = 1e7+5;int a,b;string re;int head1;int c[N];int index1[N];int aa,bb;int main(){while(cin >> a>>b){aa = a;bb = b;memset(c,0,sizeof(c));memset(index1,0,sizeof(index1));re.clear();head1 = a/b;a %= b;int ind1,ind2;while(1){if(c[a]){ind1 = index1[a];ind2 = re.size()-1;break;}else{c[a]++;index1[a] = re.size()-1;}a*=10;re += a/b+'0';a %= b;}//cout << re<<endl;int ctt = 0;int fff = 0;cout << aa<<"/"<<bb<<" = "<<head1<<".";for(int i=0;i<=ind1;i++){cout << re[i];}cout << "(";for(int i=ind1+1;i<=ind2;i++){ctt++;cout << re[i];if(ctt>=50){fff = 1;break;}}if(fff){cout <<"...";}cout <<")"<<endl;cout <<" "<< ind2-ind1<<" = number of digits in repeating cycle"<<endl<<endl;}return 0;}
0 0
- 假期训练—— Repeating Decimals UVA - 202 模拟
- UVa 202 Repeating Decimals(模拟)
- UVa 202 Repeating Decimals(模拟+哈希)
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 Repeating Decimals
- Uva 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVa-202 - Repeating Decimals
- UVa 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- Uva - 202 - Repeating Decimals
- UVA - 202 Repeating Decimals
- [UVA 202]Repeating Decimals
- UVa 202 Repeating Decimals
- Activiti 23张数据库表
- linux安装ssh
- 博为峰Java技术文章 ——JavaSE Swing JTabbedPane选项卡面板II
- VS2010下建立MFC程序
- 使用camera、matrix仿即刻APP换一换
- 假期训练—— Repeating Decimals UVA - 202 模拟
- sed 脚本分隔符引起的问题 的问题
- 1021. Deepest Root (25)
- Android源码之ArrayList
- XXX
- Python的charts和Jupyter的使用 使数据可视化 对58同城的爬取
- Bootstrap学习笔记(五)菜单、按钮及导航
- 关于Spring容器的理解
- RecyclerView的用法