No.671 1000000007
はじめに
競技プログラミング、yukicoder
No.671 1000000007の解説です。
言語はC#
何かあればTwitter→@pirorirori_n712
問題
入力:1000000007と0の個数が異なる数
出力:「入力の0の数」と「1000000007の0の数」の差
解き方
「入力の文字列の長さ」と「1000000007の長さ」の差を求める
解き方例
①「入力の文字列の長さ」と「1000000007の長さ」の差を求める
「入力された文字列」が「1000000007」と0の数だけが異なる文字列であることは
問題の定義から明らかなので、
「文字列の長さ」と「1000000007の長さ」の差は0の数の差であると言える。
そして、その数の差を求めることが今回の問題の目的なので
出力は「入力の文字列」と「1000000007」の差を出せばよい。
※差の値を出すときに使用
Math.Abs()
→値の絶対値を求める
*使い方
number=何らかの数値
Math.Abs(number);
→|number|が返される
コード例
using System; class No671{ static void Main(){ //入力を保存 var str=Console.ReadLine(); //入力と1000000007の長さの差を求める //1000000007は10文字なので10を引く var answer=str.Length-10; //問題文から入力は100以上の数なので //この時点では差がマイナス値になっている可能性がある //引いた値を絶対値に変換し、差を出す answer=Math.Abs(answer); //差を出力 Console.WriteLine(answer); } }
これを整理して
引き算をするときに絶対値に変換し、初めから差を出す
using System; class No671{ static void Main(){ //入力を保存 var str=Console.ReadLine(); //入力と1000000007の長さの差を求める //1000000007は10文字なので10を引く //入力の文字列が10より短い可能性があるので絶対値に変換して差を出す var answer=Math.Abs(str.Length-10); //差を出力 Console.WriteLine(answer); } }
さらに整理して
入力から差を求めるまでを一行で書く
using System; class No671{ static void Main(){ //入力と1000000007の長さの差を求める //1000000007は10文字なので入力の長さから10を引く //入力の文字列が10より短い可能性があるので絶対値に変換して差を出す var answer=Math.Abs(Console.ReadLine().Length-10); //差を出力 Console.WriteLine(answer); } }
さらに整理して
入力から差を求めて、出力までを一行で書く
using System; class No671{ static void Main(){ //入力と1000000007の長さの差を求める //1000000007は10文字なので入力の長さから10を引く //入力の文字列が10より短い可能性があるので絶対値に変換して差を出す //差を出力 Console.WriteLine(Math.Abs(Console.ReadLine().Length-10)); } }