|
|
本帖最后由 〇〇 于 2014-9-23 21:43 编辑
oracle_cj 发表于 2014-9-23 21:18 ![]()
c 语言写的啊,三层循环,秒过?
根本不是秒过,而是毫秒过
[oracle@redflag11012501 ~]$ vi mg.c
#include <stdio.h>
#include <stdlib.h>
#define N 10
long C[N+1][10];
void main()
{
long sum = 0;
int i, j, d, k;
for(i = 1; i <= N; i++)
{
for(d = 0; d < i; d++) // d 位数, 拼上 (i - d) 个 k
{
for(j = 1; j < 10; j++)
{
// d 位数 以数字 j 结尾
for(k = 1; k < 10; k++) // 拼上 (i - d) 个 k
{
if(i - d > k) continue;
if(k == j) continue;
C[ i][k] += C[d][j];
}
}
}
for(d = i; d < 10; d++) // 拼上 i 个 d
{
C[ i][d] += 1;
}
}
for(d = 0; d < 10; d++)
{
sum += C[N][d];
}
printf("%ld\r\n", sum);
}
~
~
~
~
~
~
~
~
~
"mg.c" [新] 39L, 1047C 已写入
[oracle@redflag11012501 ~]$ gcc -o mg mg.c -O2
mg.c: In function ‘main’:
mg.c:8: 警告:‘main’ 的返回类型不是 ‘int’
[oracle@redflag11012501 ~]$ time ./mg
3110771999
real 0m0.001s
user 0m0.000s
sys 0m0.001s |
|