A.退屈なアパート
テストごとの時間制限テストごとの1秒のメモリ制限256メガバイト
入力標準入力
出力標準出力
1から10000までの番号が付けられた10000のアパートで構成される建物があります。
その番号が同じ数字で構成されている場合は、退屈なアパートに電話してください。退屈なアパートの例は、11,2,777,9999などです。
私たちのキャラクターはトラブルメーカーであり、誰かが電話に出るまで、彼はすべての退屈なアパートのインターホンを次の順序で呼び出します。
最初に、彼は数字1で構成されるすべてのアパートを昇順(1,11,111,1111)で呼び出します。
次に、彼は数字2で構成されるすべてのアパートを昇順(2,22,222,2222)で呼び出し
ます。
退屈なアパートxの住人が電話に出て、私たちのキャラクターはそれ以上誰にも電話をかけなくなります。
私たちのキャラクターは、彼が合計で何桁押したかを知りたがっています。あなたの仕事は、彼がキーを押した合計数を数えるのを助けることです。
たとえば、退屈なアパート22の住人が答えた場合、私たちのキャラクターは、番号1,11,111,1111,2,22のアパートと呼ばれ、彼が押した合計桁数は1 + 2 + 3 + 4 + 1 + 2 = 13です。 。
t個の独立したテストケースに答える必要があります。
入力
入力の最初の行には、1つの整数t(1≤t≤36)(テストケースの数)が含まれています。
テストケースの唯一の行には、1つの整数x(1≤x≤9999)が含まれています。これは、電話に応答した居住者のアパート番号です。xが同じ数字で構成されていることが保証されます。
出力
テストケースごとに、答えを印刷します。キャラクターが押した合計桁数です。
例
入力
4
22
9999
1
777
出力
13
90
1
66
コード:
それをシミュレートするか、パターンを見つけます(たとえば、3から始まり、それぞれ1と2を含む10のタイプがあります)。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
int t;
string n;
int main()
{
vector<string> v;
for(char i='1';i<='9';i++) //1 11 111....9999放入vector
{
string x="";
x+=i;
v.push_back(x);
while(x.size()<4)
{
x+=i;
v.push_back(x);
}
}
cin>>t;
while(t--)
{
int ans=0;
cin>>n;
for(auto s:v)
{
ans+=s.size(); //累加位数
if(s==n) break; //相等就结束
}
cout<<ans<<endl;
}
return 0;
}