zoukankan      html  css  js  c++  java
  • 求小数点后第n位

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    //求小数点后第n位,很容易想到(a*10^(n+2)/b)%1000,即可得到数值,注意输出的时候左边补充0
    //但是a*10^(n+2)太大了,long long 溢出了,利用公式x/d%m = (x%(d*m)/d)%m,直接获得等价类
    //得到,((a*10^(n+2)%(b*1000))/b)%m,这样就可以用快速幂求了
    ll a,b,n,s;
    //ll pow(ll x,ll y,ll m){
    //    if(y==0) return 1;
    //    ll p=pow(x,y/2,m);
    //    if(y&1) p=((p*p)%m*x)%m;
    //    else p=(p*p)%m;
    //    return p;
    //}
    ll pow(ll x,ll y,ll m){
        //把y分成2进制表示,这样是1就x,就可以凑出x^y
        ll s=1;
        while(y>0){
            if(y&1) s=s*x%m;
            y>>=1;
            x=x*x%m;
        }
        return s;
    }
    int main() {
        cin>>a>>b>>n;
        ll mod=b*1000,res=((a%mod*pow(10,n+2,mod))/b)%1000;
        printf("%03lld
    ",res);
        return 0;
    }
  • 相关阅读:
    My first blog!
    Elasticsearch安装 + Head插件安装 + Bigdesk插件安装
    泛型-反射-注解
    JFinal自定义FreeMarker标签
    Hadoop集群中节点角色定义
    HBase
    MapReduce
    HDFS
    Hadoop基本概念
    HTTP浅析
  • 原文地址:https://www.cnblogs.com/MorrowWind/p/13056584.html
Copyright © 2011-2022 走看看