zoukankan      html  css  js  c++  java
  • 一本通 1615:【例 1】序列的第 k 个数

    一本通 1615:【例 1】序列的第 k 个数

    传送门

    我在这里!


    思路

    输入一个序列的前三个数并求出这个序列的第K项,这个数列不是等比序列就是等差数列,等差数列比较好判断,如果序列中(a_{i+2}-a_{i+1}=a_{i+1}-a_{i}),那他肯定是等差数列,然后根据通项式(a_{n}=a_{1}+{n-1}*d就可以求出第N项)((d)为一个常数,(d=a_{i}-a_{i-1})).至于剩下的就一定是等比数列了,但求第N项的时候,(a_{n}=a_{1}*q^{n-1}),求q的n-1次方需要使用快速幂

    代码

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    ll a,b,c,k,d,res;
    ll t;
    const ll M=200907;
    
    ll quickpower(ll a,ll b) {
    	ll ret=1;
    	while(b) {
    		if(b&1)ret=(ret*a)%M;
    		b>>=1;
    		a=a*a%M;
    	}
    	return ret;
    }
    
    int main() {
    	scanf("%lld",&t);
    	while(t--) {
    		cin>>a>>b>>c>>k;
    		if((c-b)==(b-a)) {
    			d=(b-a)%M;
    			res=(a+(k-1)%M*d)%M;
    		} else {
    			d=(b/a)%M;
    			res=a%M*quickpower(d,k-1)%M;
    		}
    		cout<<res<<"
    ";
    	}
    	return 0;
    }
    
  • 相关阅读:
    vue换一换功能原型
    一些文章收集
    mint-ui popup自动关闭
    vue 实现二选一列表
    用数组实现矩阵乘法
    表格
    表单
    django项目创建和结构解释
    js操作元素样式
    操作标签属性
  • 原文地址:https://www.cnblogs.com/loceaner/p/10857699.html
Copyright © 2011-2022 走看看