Alice has just learned addition. However, she hasn't learned the concept of "carrying" fully — instead of carrying to the next column, she carries to the column two columns to the left.
For example, the regular way to evaluate the sum 2039+2976 would be as shown:
However, Alice evaluates it as shown:
In particular, this is what she does:
- add 9 and 6 to make 15, and carry the 1 to the column two columns to the left, i. e. to the column "0 9";
- add 3 and 7 to make 10 and carry the 1 to the column two columns to the left, i. e. to the column "2 2";
- add 1, 0, and 9 to make 10 and carry the 1 to the column two columns to the left, i. e. to the column above the plus sign;
- add 1, 2 and 2 to make 5;
- add 1 to make 1.
Thus, she ends up with the incorrect result of 15005.
Alice comes up to Bob and says that she has added two numbers to get a result of n. However, Bob knows that Alice adds in her own way. Help Bob find the number of ordered pairs of positive integers such that when Alice adds them, she will get a result of n. Note that pairs (a,b) and (b,a) are considered different if a≠b.
Input
The input consists of multiple test cases. The first line contains an integer t (1≤t≤1000) — the number of test cases. The description of the test cases follows.
The only line of each test case contains an integer n (2≤n≤109) — the number Alice shows Bob.
Output
For each test case, output one integer — the number of ordered pairs of positive integers such that when Alice adds them, she will get a result of n.
Example
input
Copy
5 100 12 8 2021 10000
output
Copy
9 4 7 44 99
Note
In the first test case, when Alice evaluates any of the sums 1+9, 2+8, 3+7, 4+6, 5+5, 6+4, 7+3, 8+2, or 9+1, she will get a result of 100. The picture below shows how Alice evaluates 6+4:
思路:当你自己造几个样例用错误的加法计算时你会发现偶数位上的数只会对偶数位产生影响,这时你将奇数位与偶数位分开,用正确的加法算一遍,然后再将算好的数插空插入时,会发现与错误的加法得到的数一样。
这里拿n=2021举例:将它分为x,y。x=22,y=01。组成y的有(0,1)(1,0);组成x的有(0,22)(1,21)……(22,0)。一共有(x+1)*(y+1)种,但这么多种时会有(0,2021)(2021,0)(即0+2021,2021+0)这样的情况出现。所以在最后的答案减二。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin>>t;
while(t--)
{
string n;
int a=0,b=0;
cin>>n;
for(int i=0;i<n.size();i++)
{
if(i%2==0)
{
a*=10;
a=a+(n[i]-'0');
}
else
{
b*=10;
b+=(n[i]-'0');
}
}
ll ans=0;
ans=(b+1)*(a+1)-2;
cout<<ans<<endl;
}
return 0;
}