[算法] 计算的平方 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) 分别如图.