l*r
2 楼
【 以下文字转载自 Investment 讨论区 】
发信人: maxelement (Keep working ,good things will happen), 信区: Investment
标 题: 有必要专门开529plan给孩子存学费吗?
发信站: BBS 未名空间站 (Fri Apr 6 12:02:52 2012, 美东)
现在自己有IRA和一个投资账户(随时可以cash out)
还有必要开529 plan吗?这个college saving 账户有什么特别的优势吗?
谢谢,实在是不太懂,请教大家。
发信人: maxelement (Keep working ,good things will happen), 信区: Investment
标 题: 有必要专门开529plan给孩子存学费吗?
发信站: BBS 未名空间站 (Fri Apr 6 12:02:52 2012, 美东)
现在自己有IRA和一个投资账户(随时可以cash out)
还有必要开529 plan吗?这个college saving 账户有什么特别的优势吗?
谢谢,实在是不太懂,请教大家。
i*i
3 楼
有无聊的吗?四年级小孩的题俺居然不会啊
用6,17,3,7,加,减,乘,除,怎么得出29?数字可以不用,但不能用两次。
用6,17,3,7,加,减,乘,除,怎么得出29?数字可以不用,但不能用两次。
J*A
4 楼
貌似加州的529没有任何州税上的优惠?懂得人来说说?
Investment
【在 l**********r 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 【 以下文字转载自 Investment 讨论区 】
: 发信人: maxelement (Keep working ,good things will happen), 信区: Investment
: 标 题: 有必要专门开529plan给孩子存学费吗?
: 发信站: BBS 未名空间站 (Fri Apr 6 12:02:52 2012, 美东)
: 现在自己有IRA和一个投资账户(随时可以cash out)
: 还有必要开529 plan吗?这个college saving 账户有什么特别的优势吗?
: 谢谢,实在是不太懂,请教大家。
Investment
【在 l**********r 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 【 以下文字转载自 Investment 讨论区 】
: 发信人: maxelement (Keep working ,good things will happen), 信区: Investment
: 标 题: 有必要专门开529plan给孩子存学费吗?
: 发信站: BBS 未名空间站 (Fri Apr 6 12:02:52 2012, 美东)
: 现在自己有IRA和一个投资账户(随时可以cash out)
: 还有必要开529 plan吗?这个college saving 账户有什么特别的优势吗?
: 谢谢,实在是不太懂,请教大家。
l*3
9 楼
这尼玛还要跑程序
H*g
15 楼
我们小时候都是玩算24,为啥这个要算29
s*n
28 楼
3 6 - 7 = 29
I*d
32 楼
http://rosettacode.org/wiki/24_game/Solve#C
改一下就行了。这是输入4个的,可以改成输入3个的。
6 17 3 7: No solution
……
#include
#include
#include
#define n_cards 4
#define solve_goal 29
#define max_digit 9
typedef struct { int num, denom; } frac_t, *frac;
typedef enum { C_NUM = 0, C_ADD, C_SUB, C_MUL, C_DIV } op_type;
typedef struct expr_t *expr;
typedef struct expr_t {
op_type op;
expr left, right;
int value;
} expr_t;
void show_expr(expr e, op_type prec, int is_right)
{
const char * op;
switch(e->op) {
case C_NUM: printf("%d", e->value);
return;
case C_ADD: op = " + "; break;
case C_SUB: op = " - "; break;
case C_MUL: op = " x "; break;
case C_DIV: op = " / "; break;
}
if ((e->op == prec && is_right) || e->op < prec) printf("(");
show_expr(e->left, e->op, 0);
printf("%s", op);
show_expr(e->right, e->op, 1);
if ((e->op == prec && is_right) || e->op < prec) printf(")");
}
void eval_expr(expr e, frac f)
{
frac_t left, right;
if (e->op == C_NUM) {
f->num = e->value;
f->denom = 1;
return;
}
eval_expr(e->left, &left);
eval_expr(e->right, &right);
switch (e->op) {
case C_ADD:
f->num = left.num * right.denom + left.denom * right.num;
f->denom = left.denom * right.denom;
return;
case C_SUB:
f->num = left.num * right.denom - left.denom * right.num;
f->denom = left.denom * right.denom;
return;
case C_MUL:
f->num = left.num * right.num;
f->denom = left.denom * right.denom;
return;
case C_DIV:
f->num = left.num * right.denom;
f->denom = left.denom * right.num;
return;
default:
fprintf(stderr, "Unknown op: %d\n", e->op);
return;
}
}
int solve(expr ex_in[], int len)
{
int i, j;
expr_t node;
expr ex[n_cards];
frac_t final;
if (len == 1) {
eval_expr(ex_in[0], &final);
if (final.num == final.denom * solve_goal && final.denom) {
show_expr(ex_in[0], 0, 0);
return 1;
}
return 0;
}
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++)
ex[j - 1] = ex_in[j];
ex[i] = &node;
for (j = i + 1; j < len; j++) {
node.left = ex_in[i];
node.right = ex_in[j];
for (node.op = C_ADD; node.op <= C_DIV; node.op++)
if (solve(ex, len - 1))
return 1;
node.left = ex_in[j];
node.right = ex_in[i];
node.op = C_SUB;
if (solve(ex, len - 1)) return 1;
node.op = C_DIV;
if (solve(ex, len - 1)) return 1;
ex[j] = ex_in[j];
}
ex[i] = ex_in[i];
}
return 0;
}
int solve24(int n[])
{
int i;
expr_t ex[n_cards];
expr e[n_cards];
for (i = 0; i < n_cards; i++) {
e[i] = ex + i;
ex[i].op = C_NUM;
ex[i].left = ex[i].right = 0;
ex[i].value = n[i];
}
return solve(e, n_cards);
}
int main()
{
int i, j, n[] = { 3, 3, 8, 8, 9 };
srand(time(0));
for (i = 0; i < n_cards; i++) {
scanf("%d",&n[i]);
}
for (i = 0; i < n_cards; i++) {
printf(" %d", n[i]);
}
printf(": ");
printf(solve24(n) ? "\n" : "No solution\n");
return 0;
}
【在 H********g 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 需要贴出程序全文,运行条件,运行时间,调试参数,log
改一下就行了。这是输入4个的,可以改成输入3个的。
6 17 3 7: No solution
……
#include
#include
#include
#define n_cards 4
#define solve_goal 29
#define max_digit 9
typedef struct { int num, denom; } frac_t, *frac;
typedef enum { C_NUM = 0, C_ADD, C_SUB, C_MUL, C_DIV } op_type;
typedef struct expr_t *expr;
typedef struct expr_t {
op_type op;
expr left, right;
int value;
} expr_t;
void show_expr(expr e, op_type prec, int is_right)
{
const char * op;
switch(e->op) {
case C_NUM: printf("%d", e->value);
return;
case C_ADD: op = " + "; break;
case C_SUB: op = " - "; break;
case C_MUL: op = " x "; break;
case C_DIV: op = " / "; break;
}
if ((e->op == prec && is_right) || e->op < prec) printf("(");
show_expr(e->left, e->op, 0);
printf("%s", op);
show_expr(e->right, e->op, 1);
if ((e->op == prec && is_right) || e->op < prec) printf(")");
}
void eval_expr(expr e, frac f)
{
frac_t left, right;
if (e->op == C_NUM) {
f->num = e->value;
f->denom = 1;
return;
}
eval_expr(e->left, &left);
eval_expr(e->right, &right);
switch (e->op) {
case C_ADD:
f->num = left.num * right.denom + left.denom * right.num;
f->denom = left.denom * right.denom;
return;
case C_SUB:
f->num = left.num * right.denom - left.denom * right.num;
f->denom = left.denom * right.denom;
return;
case C_MUL:
f->num = left.num * right.num;
f->denom = left.denom * right.denom;
return;
case C_DIV:
f->num = left.num * right.denom;
f->denom = left.denom * right.num;
return;
default:
fprintf(stderr, "Unknown op: %d\n", e->op);
return;
}
}
int solve(expr ex_in[], int len)
{
int i, j;
expr_t node;
expr ex[n_cards];
frac_t final;
if (len == 1) {
eval_expr(ex_in[0], &final);
if (final.num == final.denom * solve_goal && final.denom) {
show_expr(ex_in[0], 0, 0);
return 1;
}
return 0;
}
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++)
ex[j - 1] = ex_in[j];
ex[i] = &node;
for (j = i + 1; j < len; j++) {
node.left = ex_in[i];
node.right = ex_in[j];
for (node.op = C_ADD; node.op <= C_DIV; node.op++)
if (solve(ex, len - 1))
return 1;
node.left = ex_in[j];
node.right = ex_in[i];
node.op = C_SUB;
if (solve(ex, len - 1)) return 1;
node.op = C_DIV;
if (solve(ex, len - 1)) return 1;
ex[j] = ex_in[j];
}
ex[i] = ex_in[i];
}
return 0;
}
int solve24(int n[])
{
int i;
expr_t ex[n_cards];
expr e[n_cards];
for (i = 0; i < n_cards; i++) {
e[i] = ex + i;
ex[i].op = C_NUM;
ex[i].left = ex[i].right = 0;
ex[i].value = n[i];
}
return solve(e, n_cards);
}
int main()
{
int i, j, n[] = { 3, 3, 8, 8, 9 };
srand(time(0));
for (i = 0; i < n_cards; i++) {
scanf("%d",&n[i]);
}
for (i = 0; i < n_cards; i++) {
printf(" %d", n[i]);
}
printf(": ");
printf(solve24(n) ? "\n" : "No solution\n");
return 0;
}
【在 H********g 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 需要贴出程序全文,运行条件,运行时间,调试参数,log
H*g
33 楼
好高级,还用C
【在 I********d 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: http://rosettacode.org/wiki/24_game/Solve#C
: 改一下就行了。这是输入4个的,可以改成输入3个的。
: 6 17 3 7: No solution
: ……
: #include
: #include
: #include
: #define n_cards 4
: #define solve_goal 29
: #define max_digit 9
【在 I********d 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: http://rosettacode.org/wiki/24_game/Solve#C
: 改一下就行了。这是输入4个的,可以改成输入3个的。
: 6 17 3 7: No solution
: ……
: #include
: #include
: #include
: #define n_cards 4
: #define solve_goal 29
: #define max_digit 9
d*o
34 楼
穷举了
没解
def solveForT(pool, target, minUsed):
import itertools
import numpy as np
import sys
A=pool+[0]*(4-minUsed)
err = 1e-5
vals = np.array(list(itertools.permutations(range(len(A)))))
ops = np.array(list(itertools.product('+-*/',repeat=3)))
exprs = ['(({}{}{}){}{}){}{}', '{}{}(({}{}{}){}{})',\
'{}{}({}{}({}{}{}))', '({}{}({}{}{})){}{}',\
'({}{}{}){}({}{}{})']
for i in vals:
for j in ops:
for f in exprs:
formula = f.format(A[i[0]], j[0], A[i[1]], j[1],\
A[i[2]], j[2], A[i[3]])
try:
res = eval(formula)
if abs(res - target) < err:
print(formula)
except ZeroDivisionError:
continue
solveForT([3,6,7,17],29,2)
【在 i*i 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 有无聊的吗?四年级小孩的题俺居然不会啊
: 用6,17,3,7,加,减,乘,除,怎么得出29?数字可以不用,但不能用两次。
没解
def solveForT(pool, target, minUsed):
import itertools
import numpy as np
import sys
A=pool+[0]*(4-minUsed)
err = 1e-5
vals = np.array(list(itertools.permutations(range(len(A)))))
ops = np.array(list(itertools.product('+-*/',repeat=3)))
exprs = ['(({}{}{}){}{}){}{}', '{}{}(({}{}{}){}{})',\
'{}{}({}{}({}{}{}))', '({}{}({}{}{})){}{}',\
'({}{}{}){}({}{}{})']
for i in vals:
for j in ops:
for f in exprs:
formula = f.format(A[i[0]], j[0], A[i[1]], j[1],\
A[i[2]], j[2], A[i[3]])
try:
res = eval(formula)
if abs(res - target) < err:
print(formula)
except ZeroDivisionError:
continue
solveForT([3,6,7,17],29,2)
【在 i*i 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 有无聊的吗?四年级小孩的题俺居然不会啊
: 用6,17,3,7,加,减,乘,除,怎么得出29?数字可以不用,但不能用两次。
相关阅读
Re: 人类马蝇 (转载)GoWest: 大话西游版unidentified_title伊朗的货币比三胖的钱弱得太多动物繁殖后代需要做爱才能完成 (转载)unidentified_title安倍演讲,朝鲜代表在那里认真记账呢《2047年,三体降临地球》王自健 丁挚恒 张硕 相声walking dead越拍越差阿毛子厉害Re: 天津市掀起学习《习近平的七年知青岁月》热潮 (转载)unidentified_titleunidentified_title【版务1】关于辣妹及其马甲 (转载)从不惜一切代价看,老聂当年不教包子下围棋太正确了! (转载)你们把我的扯淡贴顶到5个回帖,我发50个包子男子举报女友吸毒后自己获刑6个月, 女友被拘15日你们把我的扯淡贴顶到500个回帖,我发50个包子unidentified_title今日最近笑话