zoukankan      html  css  js  c++  java
  • 数字

    【题目描述】

    给一个关于x的多项式,并给定一个x,求该多项式在带入该x时的值最后k位数字。

    【输入描述】

    第一行两个整数n、k;

    之后的n行,每行两个数ai和bi,表示多项式的一项ai*x^bi;

    最后一行一个整数x。

    【输出描述】

    输出k行,按顺序输出该多项式带入x后值的最后k位数字,若不足k位,则高位补零。

    【输入样例】

    2 1

    3 2

    1 5

    3

    【输出样例】

    0

    【数据范围及提示】

    对于100%的数据,1 <= n <= 100000,1 <= ai,bi,x <= 10^9,1 <= k <= 8。

    #include<cstdio>
    #include<iostream>
    #define N 100100
    using namespace std;
    int n,k,ki=1,x,cnt=0;
    long long ans;
    int a[N],b[N],an[10];
    long long ksm(long long p,long long q)
    {
        long long sum=1;
        while (p>0)
          {
               if (p%2) sum=sum*q%ki;
               q=q%ki*q%ki;
               p/=2;
          }
        return sum;
    }
    void print()
    {
        while (ans>0)
          {
               an[++cnt]=ans%10;
               ans/=10;
          }
        if (cnt<k)
          {
              for (int i=1;i<=k-cnt;i++)
                printf("0
    ");
          }
        for (int i=cnt;i>=1;i--)
          printf("%d
    ",an[i]);
    }
    int main()
    {
      freopen("digits.in","r",stdin);
      freopen("digits.out","w",stdout);
      scanf("%d%d",&n,&k);
      for (int i=1;i<=k;i++) ki*=10;
      for (int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
      scanf("%d",&x);
      for (int i=1;i<=n;i++) ans=(ans+ksm(b[i],x)*a[i]%ki)%ki;
      print();
      fclose(stdin);
      fclose(stdout);
      return 0;    
    }
    I'm so lost but not afraid ,I've been broken and raise again
  • 相关阅读:
    jsp内置对象
    Response响应
    中医不传之秘
    slam-四元运动学
    ubuntu 16.04 设置 win+e 快捷键打开文件夹管理器
    ubuntu16.04 更新nvidia 显卡驱动后显示 clean ... files ... blocks ... /sys/class/backlight/nvidia_0/actural_brightness
    android studio 引入模块失败解决方法
    gradle
    python logger
    ubuntu自定义终端风格
  • 原文地址:https://www.cnblogs.com/sjymj/p/5794274.html
Copyright © 2011-2022 走看看