簡単な数学

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
F

簡単な数学

#1

投稿記事 by F » 16年前

揃えて消すパズル
サメガメというジャンルのスコア処理の所ですが

2つ揃い消えると2点 (2*0)+2
3つ揃い消えると4点 (2*0)+(2*1)+2
4つ揃い消えると8点 (2*0)+(2*1)+(2*2)+2
5つ揃い消えると14点 (2*0)+(2*1)+(2*2)+(2*3)+2
と増えて行きます
Cで書くとこうなると思うんですが、簡単な方法がありましたら教えて頂けないでしょうか?
int score(int num){
    num --;
    int ret = 0;
    for(int i=0;i<num;i++){
        ret += 2*i;
    }
    ret+=2;
    return ret;
}

たいちう

Re:簡単な数学

#2

投稿記事 by たいちう » 16年前

お好きな方をどうぞ。
int score(int num)
{
	int i, ret = 2;
	for (i = 1; i <= num - 2; i++)
		ret += 2 * i;
	return ret;
}

int score(int num)
{
	return 2 + 2 * (num - 2) * (num - 1) / 2;
}

F

Re:簡単な数学

#3

投稿記事 by F » 16年前

1行で掛けるんですか。
動作確認しました。見てもどういう計算しているか分からないですが、分解しながら見てみようと思います。
本当にありがとう御座います。

閉鎖

“C言語何でも質問掲示板” へ戻る