SGU

编程入门 行业动态 更新时间:2024-10-09 21:26:17

<a href=https://www.elefans.com/category/jswz/34/1736424.html style=SGU"/>

SGU

题意:

求 a / b 的小数点后的循环节的开始点和循环节长度

至于整数,循环节长度为0,开始位置就是整除完了的后一位


思路:

直接模拟,出现重复的余数,说明出现了循环节,如果被整除了的话直接输出

本来看错数据大小了,用的 map 记录余数的位置,748ms 卡过,后来发现只有1e6 的数据,用数组记录就好了;


#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<queue>
#include<stack>
#include<map>
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
#define kuaidian ios::sync_with_stdio(0);using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e6 + 7, maxd = 670000 + 7;
const ll mod = 1e9 + 7;
const int INF = 0x7f7f7f7f;int x, y;
int vis[maxn] = {0};void solve() {int cnt = 1, a, b;x %= y;while(1) {if(x % y == 0) {printf("%d 0\n", cnt-1);return;}else if(x < y) {int t = x % y;if(vis[t] > 0) {a = vis[t];b = cnt - vis[t];printf("%d %d\n", a-1, b);return;}else {vis[t] = cnt++;}x *= 10;}else {x %= y;}}
}int main() {kuaidian;cin >> x >> y;solve();return 0 ;
}


更多推荐

SGU

本文发布于:2024-02-13 19:57:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760396.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SGU

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!