求a/b的小数点后某个具体的数值(Position in Fraction)

来源:互联网 发布:最后一炮优化很烂 编辑:程序博客网 时间:2024/06/05 19:19

原题地址http://codeforces.com/contest/900/problem/B
题意:给出三个数a,b,c,求在a/b这个小数的小数点后首次出现数字c的位置,如果没有,输出-1

  1. 由于计算机本身精度的问题,无论你用什么样的数据类型,都无法存储过长的数据精度,就算是double,也只有15~16位的精度,因此肯定是不满足这道题的要求的。
  2. 然后第一次写的时候是这么写的
        for(int i=1; i<=10000; i++)        {            a*=10;            int now=a/b%10;            if(now==c)            {                printf("%d\n",i);                return 0;            }        }        printf("-1\n");

发现提交了之后wa了,原因大概是now=a/b%10前面一直a*=10导致爆int了
所以ac代码应该是这样

#include <bits/stdc++.h>using namespace std;int main(){    int a,b,c;    scanf("%d%d%d",&a,&b,&c);    for(int i=1; i<=10000; i++)    {        a*=10;        int now=a/b;        if(now==c)        {            printf("%d\n",i);            return 0;        }        a=a%b;    }    printf("-1\n");    return 0;}
原创粉丝点击