又tm的數學題

我這種數學渣渣。。。

莫名發現好像就是直接相乘的結果。。。(要是在考場上我絕壁直接用這個結論了,但是作爲一個剛剛學了數學歸納法的沙茶。。。我決定證明一下。。。)

1 兩個數a,b 顯然1/a(a+b)+1/b(a+b)  通分一下顯然就是a*b

2 三個數字 我們枚舉最後一個數字 則爲1/ab(a+b+c)+1/bc(a+b+c)+1/ac(a+b+c) 然後一樣通分一下就=a*b*c了

3顯然這樣還不能算嚴格證明,但是規律已經很顯然了。。。所以就這麼找吧。。

#include <cstdio> 
#include <cmath> 
#include <ctime> 
#include <string> 
#include <cstring> 
#include <cstdlib> 
#include <iostream> 
#include <algorithm> 
   
#include <vector> 
 
#define pb push_back
 
#define forup(i,a,b) for(int i=(a);i<=(b);i++) 
#define fordown(i,a,b) for(int i=(a);i>=(b);i--) 
   
#define maxn 100005
#define maxm 100005
#define INF 1070000000 
#define MOD 998244353
using namespace std; 
typedef long long ll; 
typedef unsigned long long ull; 
   
template<class T> inline 
void read(T& num){   num = 0; bool f = true;char ch = getchar();   while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();}  while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();}   num = f ? num: -num; }
int out[100];
template<class T> inline
void write(T x,char ch){  if (x==0) {putchar('0'); putchar(ch); return;} if (x<0) {putchar('-'); x=-x;}int num=0; while (x){ out[num++]=(x%10); x=x/10;} fordown(i,num-1,0) putchar(out[i]+'0'); putchar(ch); }
/*==================split line==================*/
ll mi(ll p,int ci)
{ if(ci==0) return 1ll;if(ci==1) return p%MOD; ll x=mi(p,ci>>1);x=(x*x)%MOD;if(ci%2==1)  x=(x*p)%MOD;return x%MOD;}
int main()
{  int n;
 cin>>n;
ll ans=1ll;
   while(n--)
     {ll x;
         read(x);
          ans=(ans*x)%MOD;
      }
    cout<<mi(ans,MOD-2);
     
    return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章