Codeforces Round #742 (Div. 2) C. Carrying Conundrum
题意:
算加法的时候进位变成向前面两个位置进位,问组成
n
n
n的方案数
(
a
,
b
)
(a,b)
(a,b)的个数,要求
a
,
b
a,b
a,b是正整数并且
a
!
=
b
a!=b
a!=b
思路:
因为是向前两个位置进位,奇数位和偶数位是不影响的,分开考虑就行。
比如
2021
2021
2021,奇数位是
1
1
1,偶数位是
22
22
22。两个数相加组成
1
1
1的方案数有两种,组成
22
22
22的方案数都
23
23
23种,所以是
2
∗
23
2*23
2∗23种,最后减去奇数全为
0
0
0和偶数全为
0
0
0的情况
代码:
int main() {
int _=read;
while(_--){
string s;cin>>s;
int cnt0=0,cnt1=0;
for(int i=0;i<s.size();i++)
if(i%2) cnt0=cnt0*10+(s[i]-'0');
else cnt1=cnt1*10+(s[i]-'0');
//cout<<cnt0<<" "<<cnt1<<" "<<s<<endl;
cnt0++,cnt1++;
printf("%d\n",cnt0*cnt1-2);
}
return 0;
}