zoukankan      html  css  js  c++  java
  • A1063. 求导函数的值

    题目:http://www.tsinsen.com/A1063

    这道题有两个点:

    第一个,不要做重复的计算,我看有些提交是梅ai*x0^n就放到求次方的方程里面代一遍,加大了时间复杂度,本来时间复杂度是o(n)的。

    只需要在for循环中完成次方的递增就好,同时累加。

    第二个是a*b mod c=(a mod c)*(b mod c)

    证明很简单,将a,b分成可以被c整除的部分au,bu.不能整除的部分ah,bh.

    a*b=(au+ah)*(bu+bh)=au*bu+au*bh+ah*bu+ah*bh

    上式只有最后一项会产生余数。并且ah=a mod c;bh=b mod c;

    代码:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int a[101];
    int b[101];
    int n,x0;
    long long int result,step;
    int main()
    {
        cin>>n>>x0;
        getchar();
        for(int i=0;i<=n;i++)
            cin>>a[i];
        for(int i=0; i<=n-1; i++)
        {
            b[i]=a[i+1]*(i+1);
        }
        step=x0;
        result=b[0];
        for(int i=1; i<n; i++)
        {
            result=(result%9999+step*b[i]%9999)%9999;
            step=step*x0%9999;
        }
        cout << (result+9999)%9999 << endl;
        return 0;
    }
    

      

    至于本题目中要求-1%9999=9998;所以要先将负数变成正数。

    本博客专注于错误锦集,在作死的边缘试探
  • 相关阅读:
    [转]进程间通信----pipe和fifo
    [转]udev
    [转]netlink
    [转]进程间通信-----管道
    [转]socket
    [转]armv8 memory system
    [转]内核态和用户态
    [转]dpdk内存管理
    meeting and robert rules
    notion
  • 原文地址:https://www.cnblogs.com/SweetBeens/p/6420686.html
Copyright © 2011-2022 走看看