Hatena::Grouptopcoder

yakk512の日記

2014-08-16SRM#625Div2

練習,練習.

Easy

 概要

ある数字yが与えられる

この数字に対して

(a×b)+c = y

となるようなa,b,cを求めよ.

ただし,a,b,cのそれぞれについて0と1であってはならない.

a,b,cは-1000から1000の間の数字とする

 解法

  aとbに関して-1000から1000の間で全ての組み合わせを試す.

  c = y - (a*b)なので

  cが-1000から1000までの間にあるとa,b,cは組み合わせとして成り立つ.

class AddMultiply {
   public:
   vector <int> makeExpression(int y)
  {
    vector<int> v(3);
    for(int i = -1000; i <= 1000; i++)
      {
	if(i == 0 || i == 1)
	  {
	    continue;
	  }
	for(int j = -1000; j <= 1000; j++)
	  {
	    if(j == 0 || j == 1)
	      {
		continue;
	      }
	    int mul = i * j;
	    mul = y - mul;
	    if( -1000 <= mul && mul <= 1000 && mul != 0 && mul != -1)
	      {
		v[0] = i; v[1] = j; v[2] = mul;
		return v;
	      }
	  }
      }
    return v;
  }
};