murnana's diary

プリントの裏に書くとか、そんな感じです

ABC 083の反省

AtCoder Beginner Contest 083 - AtCoderbeta.atcoder.jp

A,Bは解けました。
CがTLE*1,DがWA*2。まだまだ先は長そうだ。

私の提出一覧はこちら


正解したものについてはサクッとだけ。

A - Libra

特に何も考えずに解いてしまった。
A+B,C+Dを比較すればいい。それだけ。

早い人はprintf,scanf使っているな…
あと、遠慮なくグローバル変数使ってるな…なるほど…?

B - Some Sums

自分の回答はこんな感じ。

インクルードは

#include <iostream>
#include <vector>

using namespace std;

vectorは要らなかった。

最初に用意した関数は、各桁の合計値を出す関数。

int sum(int num) {
  if( num < 10 ) return num;
  int a = num % 10;
  int b = num / 10;
  return sum(b) + a;
};

あとはmainで、合計値をひたすら算出し、当てはまった回数を数えるだけ。

int main(void)
{
  int N,A,B;
  cin >> N >> A >> B;
  
  int anser = 0;
  for(int i = A;i<=N;++i) {
    int some = sum(i);
    if( some < A ) continue;
    if( B < some ) continue;
    // cout << "i:" << i << ",some:" << some << endl;
    anser += i;
  }
  
  cout << anser << endl;
  
  return 0;
}

早い人は、再帰関数なんて使ってないです…while分です…

*1:実行時間超過

*2:不正解