【CodeForces】CodeforcesRound#677(Div。3)A。退屈なアパート(模拟)

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;
}

おすすめ

転載: blog.csdn.net/weixin_45260385/article/details/110824406