[アルゴリズム] の二乗を計算する 1 n個の数字の数 1
スレッド:
S = 111の場合…11 (n桁 1, 十進法), S ^ 2を計算する.
入力
– 最初の行: テストの数をk個 (へ<= 40).
– K次の行, それぞれの行数n – 桁数 1 Sの. (1 <= A <= 1000000)
出力
– 各テスト記録の結果を得るために 1 現在.
例
入力:
2
1
2
出力:
1
121
ソリューション:
私は対称KQ 123を参照してください。…N…321. 例えば、111はn = 3 ^ 2 = 12321
しかし、nは気づく= 10はかなり右対称ではないようです.
最高経営責任者(CEO: のn = 13 すなわち我々1111111111111 ^ 2.
1111111111111
1111111111111
1111111111111
1111111111111
+ 1111111111111
1111111111111
1111111111111
1111111111111
1111111111111
1111111111111
1111111111111
1111111111111
1111111111111
=========================
1234567901234320987654321
私たちは、法律はもはや対称であることがわかりません. そして、私はこの意図を持っていた. 私はちょうど対称行くように書く, その後、次を実行します:

私は左のそれぞれで実行し、右、次のコードを持つことになります:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int k, n;
cin>>k;
for (int i=0; i<k; i++)
{
cin>>n;
string s = "";
int temp = 0; // temp la phan du khi chi so cho 10. VD 13 thi temp la 1.
int j = 1, ji = 1;
// bat dau viet tu phai sang trai
while (j>0)
{
// cong tung cap nhu hinh ((j+temp)%10)
//sau do chen vao giua
s.insert(0, 1, (char)((j+temp)%10+'0'));
temp = (j+temp)/10;
if (j==n) ji = -1; // quay nguoc lai khi du n so
j += ji;
}
cout<<s<<endl;
}
return 0;
}
上記のコードの後に, KQて次のようにいくつかのルールが描画される:
一連に分割されている 3 次のようにヘッダ部が構成されて :
+/ ヘッダ: 123456790123456790123456790… セクションの繰り返しすなわち 123456790 (-1)/9 = N1回.
+ ミドル: 123…X…32 X = nの – 9*N1.
+/ 終わり: N1回繰り返す 098765432 そしていくつかはある 1 やっと. 簡単にするために、我々は中央のセクションは、対称すなわちフォームで保つ 12321 次いで、それの前方端部に挿入される 1 最後に.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int k, n;
cin>>k;
for (int i=0; i<k; i++)
{
cin>>n;
string s = "", s1 = "123456790", s2 = "098765432";
int n1 = (n-1)/9, n2 = n - 9*n1;
// doan giua
for (int i=1; i<=n2; i++)
s.insert(s.length(), 1, (char)(i + '0'));
for (int i=n2-1; i>0; i--)
s.insert(s.length(), 1, (char)(i + '0'));
// neu n tu 10 tro len
if (n>9)
{
// doan dau
for (int i=0; i<n1; i++)
s.insert(0, s1);
// doan cuoi
for (int i=0; i<n1; i++)
s.insert(s.length()-1, s2);
}
cout<<s<<endl;
}
return 0;
}
イラストKQは= 13 kと入力し 5 数nは (14, 37, 30, 113, 352) それぞれの図に示されるように.




最近のコメント