码迷,mamicode.com
首页 > 其他好文 > 详细

A1063. 求导函数的值

时间:2017-02-20 18:51:41      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:stdio.h   getchar   etc   ret   long   提交   std   ios   .com   

题目: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;所以要先将负数变成正数。

A1063. 求导函数的值

标签:stdio.h   getchar   etc   ret   long   提交   std   ios   .com   

原文地址:http://www.cnblogs.com/SweetBeens/p/6420686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!