G36 生成函数的应用

视频链接:https://www.bilibili.com/video/BV1fP411g7bm/

UOJ #3028. 食物

#include<bits/stdc++.h>
using namespace std;

const int P=10007;
char s[510];

int main(){
  scanf("%s",s);
  int n=0,len=strlen(s);
  for(int i=0;i<len;i++)
    n=(n*10%P+s[i]-'0')%P;
  int ans=n*(n+1)%P*(n+2)%P*1668%P;
  printf("%d\n",ans);
  return 0;
}
#include<bits/stdc++.h>
using namespace std;

const int P=10007;
char s[510];

int qpow(int a,int b){
  int res=1;
  while(b){
    if(b&1) res=(res*a)%P;
    a=(a*a)%P;        
    b>>=1;
  } 
  return res;
}
int main(){
  scanf("%s",s);
  int n=0,len=strlen(s);
  for(int i=0;i<len;i++)
    n=(n*10%P+s[i]-'0')%P;
  int ans=n*(n+1)%P*(n+2)%P*qpow(6,P-2)%P;
  printf("%d\n",ans);
  return 0;
}

 POJ 3734 Blocks

#include <cstdio>
using namespace std;

const int P=10007;
int qpow(int a, int b){
  int res=1;
  while(b){
    if(b & 1) res=res*a%P;
    a=a*a%P;
    b>>=1;
  }
  return res;
}
int main(){
  int t,n,ans;
  scanf("%d", &t);
  while(t--){
    scanf("%d", &n);
    ans=(qpow(4,n-1)+qpow(2,n-1))%P;
    printf("%d\n", ans);
  }
  return 0;
}

 

posted @ 2022-11-17 15:18  董晓  阅读(427)  评论(0)    收藏  举报