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
  • 相关阅读:
    TSQL常用查询语句
    团队开发注意事项
    SQLServer2005 XML数据类型操作
    Nunit学习笔记
    服务器架构工具表
    JQuery 做的下拉文本框
    面向对象和结构化程序设计的区别
    AFX_MSG是什么意思
    DECLARE_MESSAGE_MAP()
    AfxBeginThread的介绍/基本用法
  • 原文地址:https://www.cnblogs.com/sjymj/p/5794274.html
Copyright © 2011-2022 走看看