站外题求助

题目总版

itz_HanQAQ @ 2024-11-10 09:21:24

题目 题目描述

小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣。于是他决定做实验并 观察细胞分裂的规律。

他选取了一种特别的细胞,每天每个该细胞可以分裂出 x − 1 个新的细胞。

小 X 决定第 i 天向培养皿中加入 i 个细胞(在实验开始前培养皿中无细胞)。

现在他想知道第 n 天培养皿中总共会有多少个细胞。

由于细胞总数可能很多,你只要告诉他总数对 w 取模的值即可。

输入格式

第一行三个正整数 n, x, w。

输出格式

一行一个数表示第 n 天的细胞总数对 w 取模的值。

样例输入

2 2 47

样例输出

4

数据范围

对于 100% 的数据,n ≤ 107,1 ≤ x, w ≤ 231 − 1。

对于其中 30% 的数据,x = 1。

#include<bits/stdc++.h>
using namespace std;
long long ans[10000005];
int main(){
    int n,x,w;
    cin>>n>>x>>w;
    ans[1]=1;
    for(int i=2;i<=n;i++){
        ans[i]=(i+ans[i-1]*x)%w;
    }
    cout<<ans[n];
    return 0;
}

by itz_HanQAQ @ 2024-11-10 09:25:04

补充


by Ruan_ji @ 2024-11-10 09:25:56

@itz_HanQAQ 你写的不是对的吗?


by itz_HanQAQ @ 2024-11-10 09:30:42

@Ruan_ji 抱歉 放了分裂x-1个就是1个变成x个


by _lfggy__liangfeng__ @ 2024-11-10 09:36:09

@itz_HanQAQ

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll n,x,w;

ll quickpow(ll a,ll b)
{
    ll t=1;
    while(b)
    {
        if(b&1) t=t*a%w;
        a=a*a%w;
        b>>=1;
    }
    return t%w;
}

int main()
{
    scanf("%lld%lld%lld",&n,&x,&w);
  printf("%lld\n",quickpow(n,x));
    return 0;
}

你提交看看?


by itz_HanQAQ @ 2024-11-10 09:50:21

@-lfggyliangfeng 过不了


|