Particle

競技プログラミングについての雑記

FizzBuzzと分割数

FizzBuzzは2ヶ月前に書いた
分割数は2週間前に書いた。
人に見せられるようなコードじゃないけど、比較用として。


FizzBuzz(+HelloWorld)

たぶん、HelloWorldの次に書いたプログラム。これも、スケルトンコードを残したから一部HelloWorldだけど。
2年くらい前にバグだらけのブロック崩しとテトリスを作った記憶があるけど、気のせいだろう。
多少遅くなっても、ネストしないほうがきれいな気がする。

int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World");
	unsigned long i;
	for(i=0;i<10000;i++)
	{
		if((i%3)==0)
		{
			if((i%15)==0)
			{
				cout << "fizzbuzz" << endl;
			}
			else
			{
				cout << "fizz" <<endl;
			}
		}
		if ((i%5)==0)
		{
			cout << "buzz" << endl;
		}
		else
		{
			cout << i << endl;
		}
	}
	return 0;
}


分割数

数学ガールに影響を受けた。
今なら、メモ化して解くと思う。
計算量が分からない。指数関数っぽいけど、違うかもしれない。
本当は、全パターンを出力するプログラムを作りたかったけど、諦めた。
あと、int main使うべきだった。

int maxcoin(int m,int n);
int coin(int m,int n);

void main(){
	int number;
	cin >> number;
	cout<<maxcoin(number,number)<<endl;
}

int maxcoin(int m,int n){
  return (m - 1) ? maxcoin(m - 1,n) + coin(m,n) : 1;
}
int coin(int m,int n){
  n -= m;
  if(n == 0){
	  return 1;
  }
  if(n >= m){
    return maxcoin(m,n);
  }
  return maxcoin(n,n);
}