abc317f

abc317f

一看就是数位dp,但之前还想错了,今天课上突然想到
之前想的是怎样构造保证能够整除
但实际上将余数也设计到状态中就行

其他就是基本的数位dp

#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++) //
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define ff(i,a,b) for ((i)=(a);(i)<=(b);(i)++)
#define mk(x,y) make_pair((x),(y))
#define A puts("YES")
#define B puts("NO")

using namespace std;
typedef double db;
typedef long long ll;
const ll mo=998244353;
ll f[100][8][11][11][11][8];
ll b[100],k,n,tot,d[100],r[10],a[10],rr[10],ss,ans;

void add(ll &x, ll y){
	x=(x+y)%mo;
}
bool F(ll x,ll y){
	if (x && y) return 1;
	if (!x && !y) return 1;
	return 0;
}
void solve(){
	f[tot+1][7][0][0][0][0]=1; //
	fd(i,tot,0){
		fo(s,0,7) ff(r[0],0,a[0]-1) ff(r[1],0,a[1]-1) ff(r[2],0,a[2]-1) {
			fo(sw,0,7) {
				
				if (!f[i+1][s][r[0]][r[1]][r[2]][sw]) continue;
				int temp;
				bool flag;
				fo(t,0,7) {
					temp=0;
					flag=1;
					ss=0;
					fo(j,0,2) {
						if (t&b[j]) temp^=1;
						if ((s&b[j]) && (t&b[j]) && (!d[i])) flag=0;
						if ((s&b[j]) && F(t&b[j], d[i])) ss|=b[j];
					}
					if (temp || !flag) continue;
					
					fo(j,0,2) {
						rr[j]=r[j];
						if (t&b[j]) rr[j]=(rr[j]+b[i])%a[j];
					}
					
					add(f[i][ss][rr[0]][rr[1]][rr[2]][sw|t], f[i+1][s][r[0]][r[1]][r[2]][sw]);
				}
			}
		}
	}

	fo(s,0,7) {
		add(ans, f[0][s][0][0][0][7]);
	}
}
int main()
{
//	freopen("data.in","r",stdin);

	b[0]=1;
	fo(i,1,62) b[i]=b[i-1]*2ll;
	
	scanf("%lld",&n);
	fo(i,0,2) scanf("%lld",&a[i]);
	
	k=n; tot=0;
	while (k){
		d[tot++]=k&1;
		k/=2;
	}
	solve();
	
	printf("%lld",ans);
	
	
	return 0; 

}

 
  
posted @   gan_coder  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
  1. 1 青春コンプレックス 結束バンド
  2. 2 ギターと孤独と蒼い惑星 結束バンド
  3. 3 星座になれたら 結束バンド
  4. 4 恋のうた (feat. 由崎司) 鬼頭明里
  5. 5 月と星空 カノエラナ
  6. 6 Cagayake!GIRLS[5人Ver.] (TV size Ver.) 桜高軽音部
  7. 7 不可思議のカルテ 不可思議のカルテ
  8. 8 優しさの理由 ChouCho
月と星空 - カノエラナ
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : ENDO.

作曲 : ENDO.

编曲 : ENDO.

照れてドキドキできるのも

害羞着的心怦怦地跳动

すねてそっぽを向けるのも

撒娇着扭过头去

好きと言いあえるのも あの日

那一天 终于异口同声地说出了喜欢你

うっかり運命と出会えたから

都是因为在那一天无意中邂逅了命运

なにがあっても前むきで

无论发生什么都面向前方

たまに大胆だったりね

有时也出乎意料的胆大呢

いろんな初めてばっかりで

各种各样的第一次层出不穷

今日も初恋みたい

今天也如同初恋一般

ふたり手をつないで

两人手牵着手

歩く日々の中 なんどでも

一起漫步的日子里 无论多少次都会

キミに恋して キミを愛して

喜欢上你 爱上你

もっと増えてく思い出

不断丰富着回忆

カワイイキミのしぐさに

你那可爱的神情

思わず赤くなって見上げた

让我不自禁地羞红了脸 抬起了头

やさしく輝く 月と星空

月与星空 温柔地闪耀着光辉

あれが苦手で これが好きで

那是棘手的 这是擅长的

そんな弱点もあったりね

那样的弱点时而也会有呢

どれも愛しく思えるのは

无论是你的什么都感觉惹人怜爱

やっぱりキミが好きだから

果然还是因为太喜欢你了呢

あてもなくさまよってた

漫无目的地彷徨着

ながい夜が明けて

漫长的夜晚终于迎来了曙光

今日からは同じ道を

从今天开始就要与你一起

いっしょに歩くんだね

踏上同一条道路了呢

キミと抱き合うたびに

每当与你拥抱在一起时

なにげない幸せをかさねて

坦然自若的幸福感交织起来

めぐる季節をいくつも数え

不知数过了多少轮回的季节

ずっと全部分けあえる

这一切都一直与你共同分享着

かぎりある命でも

即使生命存在尽头

この愛の永遠を信じて

也会永远坚信着这份爱情

月の輝く星空に誓うよ

向那月光闪耀的星空许下誓言吧

ふたり手をつないで

两人手牵着手

信じあえる日々 これからも

相互信任的日子中 从现在开始也会

キミに恋して キミを愛して

喜欢上你 爱上你

もっとキミを好きになる

会变得更加喜欢你

カワイイキミのしぐさに

你那可爱的神情

思わず抱きしめて 見上げた

让我情不自禁地抱紧了你 抬起了头

いつまでも寄り添う 月と星空 月与星空 无论何时都相互依偎在一起

点击右上角即可分享
微信分享提示