回复 9楼 jiangwu10057
n是键盘读入,没有校验范围,我假设输入的数据是合法的
#include <stdio.h>
int main()
{
int s[100000], i, p2, p3, n, tmp;
s[0] = 1;
p2 = p3 = 0;
for(i=1; i<100000; ++i) {
s[i] = s[p2] * 2 + 1;
tmp = s[p3] * 3 + 1;
if(tmp == s[i]) {
++p3;
++p2;
}
else if(tmp < s[i]) {
s[i] = tmp;
++p3;
}
else
++p2;
}
//要求输出S中的第N个元素。while(scanf("%d", &n));我认为是最后一个元素
n=(p3>p2)?p3:p2;
printf("%d\n", s[n-1]);
return 0;
}
[ 本帖最后由 jiangwu10057 于 2010-1-5 20:39 编辑 ]