NC14531. 数圈圈
描述
输入描述
输入一个T,表示数据组数每组测试数据包含两个正整数a,b。T∈[1,1000]a,b∈[1,1014]
输出描述
每组数据输出结果,并换行。
示例1
输入:
11 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 1 100
输出:
0 0 0 1 0 1 0 2 1 1 111
C++11(clang++ 3.9) 解法, 执行用时: 9ms, 内存消耗: 384K, 提交时间: 2017-12-10 23:11:27
#include<iostream> using namespace std; long long int f(long long int n,long long int x){ long long int ans=0; for(long long int i=1,k;k=n/i;i=i*10){ long long int left=k/10; if(x==0){ if(left!=0) left--; else break; } ans+=left*i; int cur=k%10; if(cur>x){ ans+=i; } else if(cur==x)ans+=n-k*i+1; } return ans; } int main(){ long long int n; cin>>n; while(n--){ long long int a,b; cin>>a>>b; a--; cout<<f(b,0)+f(b,4)+f(b,6)+f(b,8)*2+f(b,9)-(f(a,0)+f(a,4)+f(a,6)+f(a,8)*2+f(a,9))<<endl; } }