纠结了一下午,没想到代码就那么短,我也太菜了。。。
主要就是num2表示t2前所有可以整除i的值的个数,num1同理,但是要考虑t1可不可以整除i,若不行,则num1会落到前面整除的数上,不在[t1,t2]里,则最后num2-num1+1会多出一个,所以如果不能整除则num1要++
1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 int main() 5 { 6 int t1,t2; 7 cin>>t1>>t2; 8 ll ans=0; 9 for(int i=1;i<=t2;i++) 10 { 11 int num1=t1%i>0?t1/i+1:t1/i; 12 int num2=t2/i; 13 ans+=num2-num1+1; 14 } 15 cout<<ans<<endl; 16 return 0; 17 }