随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

给你一个递增序列的第一位a1,最后一位an,求有多少个序列满足:

以a1为首,an为尾

 

1、B(1) = A(1)

2、后面每项满足 A[j]=B[j],  A(j-1) < B(j) ≤ A(j), 且bj能整除A(j) - A(j-1)。

 

 

  F[ i ] [ j ] 最后一位为j 的方案数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int N=50;
int f[80][80] ,n ,a1,an;
 void sov(){
    int i,j;
    memset(f,0,sizeof f) ;
     
    f[1][a1]=1;
    for(i=2;i<=N;i++)
        for(j=i+a1-2;j<=N;j++){
            if(f[i-1][j])
            for(int k=j+1;k<=N;k++){
                if(k%(k-j)==0)
                f[i][k]+=f[i-1][j] ;
            }
        }
     
    int ans=0;
    for(j=1;j<=N;j++)  ans+=f[j][an];
    cout<<a1<<' '<<an<<' '<<ans<<endl;
 }
 signed main(){
    while(cin>>a1>>an,a1||an) sov();
    return 0;
}

 

posted on   towboat  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示