zoukankan      html  css  js  c++  java
  • LightOJ 1282

    Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu

    Status

    Description

    You are given two integers: n and k, your task is to find the most significant three digits, and least significant three digits of nk.

    Input

    Input starts with an integer T (≤ 1000), denoting the number of test cases.

    Each case starts with a line containing two integers: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107).

    Output

    For each case, print the case number and the three leading digits (most significant) and three trailing digits (least significant). You can assume that the input is given such that nk contains at least six digits.

    Sample Input

    5

    123456 1

    123456 2

    2 31

    2 32

    29 8751919

    Sample Output

    Case 1: 123 456

    Case 2: 152 936

    Case 3: 214 648

    Case 4: 429 296

    Case 5: 665 669

    Source

    Problem Setter: Shamim Hafiz
    Special Thanks: Jane Alam Jan (Solution, Dataset)
    /**
              题意:求a的b次幂,结果的高三位和低三位是什么
              做法:快速幂 
    **/
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<cmath>
    #include<algorithm>
    #define mod 1000
    using namespace std;
    int quickpow(int n, int k)
    {
        int res = 1;
        int base = n%mod;
        while(k)
        {
            if(k&1)
                res *= base;
            base *= base;
            res %= mod;
            base %= mod;
            k >>= 1;
        }
        return res;
    }
    int solve(int   a,int   b)
    {
              double s = b*log10((double)a) - (int)(b*log10((double)a));
        s = pow(10.0,s);
        return s*100;
    }
    int main()
    {
    #ifndef ONLINE_JUDGE
             freopen("in.txt","r",stdin);
    #endif // ONLINE_JUDGE
              int Case = 1;
              int T;
              scanf("%d",&T);
              while(T--)
              {
                        int  a,b;
                        scanf("%d %d",&a,&b);
                        int  res = quickpow(a,b);
                        int cet =pow(10, 2+fmod(b *(double)log10((double)a), 1));
                       printf("Case %d: %d %03d
    ",Case,cet,res);
                       Case++;
              }
              return 0;
    }
  • 相关阅读:
    ansible-palybook剧本
    ansible服务的部署与使用
    keepalived实现nginx高可用
    Linux下通过uptime判断负载情况
    2个无线路由器怎么连接
    Delphi FastReport动态加载图片 (转载)
    SQLite 日期 & 时间
    SuperObject使用
    php int 与 datetime 转换
    sqlserver 2005/2008 导入超大sql文件
  • 原文地址:https://www.cnblogs.com/chenyang920/p/4445561.html
Copyright © 2011-2022 走看看