又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;
}




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