ABC048_B

a以上b以下の数字のうちxで割り切れるものの数を答える.
for文でループで解くのは一重ループだとしてもb = 10^18とか与えられるとキツイ.
f:id:umashika5555:20170226065442p:plain
上図で赤はxで割り切れる数
上段 = 中段 - 下段で考えた.
aがxで割り切れた場合はaの1つ分を足す必要がある.

#include <bits/stdc++.h>
using namespace std;
#define ll long long int

int main()
{
    ll a,b,x;
    cin>>a>>b>>x;
    cout<<b/x - a/x + !(a%x) <<endl;
    return 0;
}