Official

A - Weird Function Editorial by physics0523


プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは「practice contest」(https://atcoder.jp/contests/practice/) の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
また、プログラミングコンテストの問題に慣れていない方は、「AtCoder Beginners Selection」(https://atcoder.jp/contests/abs) の問題をいくつか試すことをおすすめします。
「競プロ典型 90 問」(https://atcoder.jp/contests/typical90) では、プログラミングコンテストで扱われる典型的な 90 問の問題に挑戦可能です。
「C++入門 AtCoder Programming Guide for beginners (APG4b)」(https://atcoder.jp/contests/APG4b) は、競技プログラマー向けのC++入門用コンテンツです。


この問題での「関数」を、プログラムでの「関数」として実装してみましょう。

この問題での関数 \(f(x)=x^2+2x+3\) は、 \(x\) を与えると \(x^2+2x+3\) を返すというものです。なので、 \(x\) を与えられると返り値として \(x^2+2x+3\) を返すような関数を実装すればよいです。

答えの計算は、サンプルの説明文のように複数個の手順に分けて行うこともできますが、実装例のように一度に計算して出力まで行ってしまうのが簡潔です。

実装例(C++):

#include<bits/stdc++.h>

using namespace std;

int f(int x){return x*x+2*x+3;}

int main(){
  int t;
  cin >> t;
  cout << f(f(f(t)+t)+f(f(t))) << '\n';
  return 0;
}

また、この問題では、入力される \(t\) として考えられるものが \(11\) 通りしかないため、それらに対して答えを予め計算した上で、それらをコードに直接埋め込んで解くこともできます。

実装例(C++):

#include<bits/stdc++.h>

using namespace std;

vector<int> res={1371,13926,119027,722502,3286971,11985446,36881331,99400902,241025627,536292966,1111355571};

int main(){
  int t;
  cin >> t;
  cout << res[t] << '\n';
  return 0;
}

posted:
last update: