博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeChef Sereja and GCD
阅读量:6621 次
发布时间:2019-06-25

本文共 1912 字,大约阅读时间需要 6 分钟。

Sereja and GCD

 
Problem code:
SEAGCD
 

All submissions for this problem are available.

Read problems statements in and .

In this problem Sereja is interested in the number of arrays of integers, A1, A2, ..., AN, with 1 ≤ Ai ≤ M, such that the greatest common divisor of all of its elements is equal to a given integer D.

Find the sum of answers to this problem with D = L, D = L+1, ..., D = R, modulo 109+7.

Input

The first line of the input contains an integer T - the number of test cases. T tests follow, each containing a single line with the values of N, M, L, R.

Output

For each test case output the required sum, modulo 109+7.

Constraints

  • 1T10
  • 1LRM

Subtasks

  • Subtask #1: 1N, M10 (10 points)
  • Subtask #2: 1N, M1000 (30 points)
  • Subtask #3: 1N, M107 (60 points)

Example

Input:25 5 1 55 5 4 5Output:31252

对于一个 d , 1~m中有 m/d个数是 d的倍数, 自然就是有 (m/d)^n种排列方法。

然而 , 这些排列当中,元素必须包含 d , 只要它减去那些只包含它的倍数的序列即可得出结果。

#include 
#include
using namespace std ;typedef long long LL;const int mod = 1e9+7;const int N = 10000100;LL A[N] ;LL q_pow( LL a , LL b ) { LL res = 1 ; while( b ) { if( b&1 ) res = res * a % mod ; a = a * a % mod ; b >>= 1; } return res ;}int main() {// freopen("in.txt","r",stdin); int _ ; cin >> _ ; while( _-- ) { LL n , m , l , r ; cin >> n >> m >> l >> r ; for( int d = m ; d >= l ; --d ) { if( d == m || m/d != m/(d+1) ) A[d] = q_pow( m/d , n ); else A[d] = A[d+1] ; } for( int i = m ; i >= l ; --i ) { for( int j = i + i ; j <= m ; j += i ) { A[i] =( ( A[i] - A[j] ) % mod + mod ) % mod ; } } LL ans = 0 ; for( int i = l ; i <= r ; ++i ) ans = ( ans + A[i] ) % mod ; cout << ans << endl ; }}
View Code

 

转载于:https://www.cnblogs.com/hlmark/p/4296796.html

你可能感兴趣的文章
服务器端口及连接及应用程序间的关系
查看>>
Android监听HOME键的最简单的方法
查看>>
Java 数组
查看>>
inotify+rsync实现实时同步
查看>>
C#GUID
查看>>
ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目
查看>>
spring+activemq中多个consumer同时处理消息时遇到的性能问题
查看>>
git clone 遇到的坑
查看>>
linux系统/var/log目录下的信息详解
查看>>
Android中利用LinearLayout继承实现ImageButton 转
查看>>
图片处理--边缘高亮
查看>>
Linux计划任务Crontab实例详解教程
查看>>
android之布局
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>
解决IE6-IE7下li上下间距
查看>>
配置级别greenplum 可用空间计算
查看>>
聚集索引更新后会不会马上重新排序
查看>>
幸运大抽奖
查看>>
消除人声的方法
查看>>
Post请求
查看>>