第 14 回蘭橋杯大会ソフトウェア大会決勝 C/C++ 大学グループ B 質問 A: Sub 2023

【蘭橋杯2023 B国】サブ2023

質問 A: 2023 年以降

【問題の説明】

シャオランは黒板に1 1を書き続けます12023年 2023年2023間のすべての整数について、数値シーケンスが取得されます:
S = 12345678910111213 ⋯ 20222023 S = 12345678910111213\cdots 20222023S=1234567891011121320222023シャオランはSS
を知りたい2023 2023と完全に等しいS内のシード シーケンスの数2023年

ヒント、以下は3 3条件を満たす3種類の部分列 (角括弧内の数字は部分列に含まれる数字です):

1 [ 2 ] 34567891 [ 0 ] 111 [ 2 ] 1 [ 3 ] 14151617181920212223 ⋯ 1[\textbf2]34567891[\textbf0]111[\textbf2]1[\textbf3]14151617181920212223 \cdオット1 [ 2 ] 34567891 [ 0 ] 111 [ 2 ] 1 [ 3 ] 14151617181920212223
1 [ 2 ] 34567891 [ 0 ] 111 [ 2 ] 131415161718192021222 [ 3 ] ⋯ 1[\textbf2]34567891[\textbf0]111[\textbf2]131415161718192021222[\textbf3] ] \cdots1 [ 2 ] 34567891 [ 0 ] 111 [ 2 ] 131415161718192021222 [ 3 ]
1 [ 2 ] 34567891 [ 0 ] 111213141516171819 [ 2 ] 021222 [ 3 ] ⋯ 1[\textbf2]34567891[\textbf0]111213141516171819[\textbf3] \cdots1 [ 2 ] 34567891 [ 0 ] 111213141516171819 [ 2 ] 021222 [ 3 ]以下は2 2
を含むものの、条件を満たさない部分列であることに注意してください。2、00 __0、2、2 __2、3、3 __3 4 つの数字ですが、順序が間違っています:
1 [ 2 ] 345678910111 [ 2 ] 131415161718192 [ 0 ] 21222 [ 3 ] ⋯ 1[\textbf2]345678910111[\textbf2]131415161718192[\textbf0]212 22[ \textbf3] \cdots1 [ 2 ] 345678910111 [ 2 ] 131415161718192 [ 0 ] 21222 [ 3 ]

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; 
int main()
{
    
    
	string s;
	for(int i=1;i<=2023;i++) s+=to_string(i);
	LL a=0;//2    de data 
	LL b=0;//20   de data
	LL c=0;//202  de data
	LL d=0;//2023 de data
	for(int i=0;i<s.size();i++) 
	{
    
    
		if(s[i]=='2') 
		{
    
    
			a++;
			c+=b;
		}
		if(s[i]=='0') b+=a;
		if(s[i]=='3') d+=c;
	}
	cout<<d;//5484660609
	
    return 0;
}

ここに画像の説明を挿入します

Supongo que te gusta

Origin blog.csdn.net/qq_52792570/article/details/133322064
Recomendado
Clasificación