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));
    }
}