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