2 条题解

  • 1
    @ 2023-6-30 9:33:33
    #include <iostream>
    using namespace std;
    // 求a的b次方对mod取模的值
    long long fastPower(long long a, long long b, long long mod) {
        long long res = 1;
        a = a % mod;
        while (b > 0) {
            if (b % 2 == 1) {
                res = (res * a) % mod;
            }
            a = (a * a) % mod;
            b /= 2;
        }
        return res;
    }
    // 求序列第k项的值
    long long getKthTerm(long long a, long long b, long long c, long long k) {
        if (b - a == c - b) { // 等差数列
            long long d = b - a;
            return (a + (k - 1) * d) % 200907;
        } else { // 等比数列
            long long q = b / a;
            return (a * fastPower(q, k - 1, 200907)) % 200907;
        }
    }
    int main() {
        int T;
        cin >> T;
        while (T--) {
            long long a, b, c, k;
            cin >> a >> b >> c >> k;
            long long result = getKthTerm(a, b, c, k);
            cout << result << endl;
        }
        return 0;
    }
    

    这个代码中,我们首先定义了一个快速幂算法 fastPower,用于求解a的b次方对mod取模的值。然后定义了一个函数 getKthTerm,用于求序列的第k项的值。在 getKthTerm函数中,首先判断序列的类型,如果是等差数列,则计算第k项的值为a + (k - 1) * d;如果是等比数列,则计算第k项的值为a * (q^(k - 1))。最后在主函数中,根据输入的测试数据,调用 getKthTerm函数计算第k项的值,并输出结果。

    分享

    • 0
      @ 2023-1-25 13:38:55
      #include <iostream>
      using namespace std;
      const long long M=200907;
      long long quickpow(long long a,long long b)
      {
      	long long ret=1;
      	while(b!=0)
      	{
      		if(b%2==1) 
      		{
      			ret=(ret*a%M)%M;
      		}
      		a=a*a%M;
      		b/=2;
      	}
      	return ret%M;
      }
      long long a,b,c;
      long long k;
      long long t;
      int main()
      {
      	cin>>t;
      	while(t--)
      	{
      		cin>>a>>b>>c>>k;
      		if(b-a==c-b) 
      		{
      			long long d=(b-a)%M;
      			cout<<((k-1)%M*d+a%M)%M<<endl;;
      		}
      		else 
      		{
      			long long d=b/a%M;
      			cout<<(quickpow(d,k-1)*a%M)%M<<endl;
      		}
      	}
      	return 0;
      }
      

      模拟题,不太难······求点赞栓Q

      • 1

      信息

      ID
      502
      时间
      1000ms
      内存
      512MiB
      难度
      5
      标签
      递交数
      30
      已通过
      14
      上传者