Đề bài :
Mình dùng 2 vòng for lòng nhau để tính, nhưng kết quả khi test trên http://www.spoj.pl là chạy chậm. Có cách nào để tính nhanh kết quả khi tính bình phương ?
Code:
Cho số S = 111...11 (n chữ số 1, hệ thập phân), tính S2.
Input
- Dòng đầu tiên: số lượng test k (k<=40).
- k dòng tiếp, mỗi dòng ghi số n - số lượng chữ số 1 của S. (1 <= n <= 1000000)
Output
- Với mỗi test ghi kết quả trên 1 dòng.
Example
Input:
2
1
2
Output:
1
121
code của mình
Code:
void Nhan(long n)
{
long *a = new long[MAX];
long *b = new long[MAX];
for(long i=0; i<n; i++)
a[i] = 1;
for(long i=0; i<n*2-1; i++)
b[i] = 0;
for(long i=0; i<n; i++)
{
int d=0, sum =0;
for(long j=0; j<n; j++)
{
sum = b[i+j] + a[j] + d;
if(sum > 9)
{
d=sum / 10;
sum = sum % 10;
}
else
{
d=0;
}
b[i + j] = sum;
}
}
}