比赛 |
20140711B班小测 |
评测结果 |
WAAWWWWWWAWWWW |
题目名称 |
残酷的数学老师 |
最终得分 |
21 |
用户昵称 |
绕着指尖 |
运行时间 |
0.198 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2014-07-11 15:37:30 |
显示代码纯文本
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
//#define fin cin
//#define fout cout
ifstream fin;
ofstream fout;
void fun(int *a,int &la,int *b,int lb)
{
int i, j, c[10][15005], d[15005], ld;
for (i = 1; i < 10; i++)
{
for (j = 0; j < la; j++)
{
c[i][j] = a[j] * i;
}
for (j = 0; j < la; j++)
{
if (c[i][j] >= 10)
{
c[i][j+1] += c[i][j] / 10;
c[i][j] %= 10;
}
}
}
memset(d,0,sizeof(d));
for (i = 0; i < lb; i++)
{
if (b[i])
{
for (j = 0; j < la; j++)
{
d[i+j] += c[b[i]][j];
}
}
}
ld = la + lb - 1;
for (i = 0; i < ld - 1; i++)
{
if (d[i] >= 10)
{
d[i+1] += d[i] / 10;
d[i] %= 10;
}
}
if (d[ld-1] >= 10)
{
d[ld] = d[ld-1] / 10;
d[ld-1] %= 10;
ld++;
}
la = ld;
for (i = 0; i < la; i++)
{
a[i] = d[i];
}
return;
}
int main()
{
fin.open("cruel1.in");
fout.open("cruel1.out");
int i, j, a[15005], la, n, b[15005], lb, p;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
fin >> n >> p;
la = 0;
while (n)
{
a[la++] = n % 10;
n /= 10;
}
lb = 1;
b[0] = 1;
while (p != 1)
{
if (p % 2)
{
fun(b,lb,a,la);
}
fun(a,la,a,la);
p /= 2;
}
fun(a,la,b,lb);
j = 1;
for (i = la-1; i >= 0; i--)
{
fout << a[i];
if (!(j % 70))
{
fout << endl;
}
}
return 0;
}