[算法] 计算的平方 1 n个数数 1
主题:
对于S = 111…11 (N个数位 1, 十进制), 计算得出s ^ 2.
输入
– 第一线: k为测试次数 (到<=40).
– K下一个行, 每一行数n – 位数 1 的S. (1 <= N <= 1000000)
产量
– 对于每一个测试记录结果 1 当前.
例
输入:
2
1
2
产量:
1
121
解:
我看到一个对称KQ 123…ñ…321. 例如,111 N = 3 ^ 2 = 12321
但是有n注意= 10是对称的,似乎不是很正确.
首席执行官: 其中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 (N-1)/9 = N1次.
+ 中间: 123…X…32 其中x =正 – 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进入K = 13 5 数n (14, 37, 30, 113, 352) 分别如图.




最新评论