The Boss on Mars
The Boss on Mars
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2327 Accepted Submission(s):
718
Company on Mars), and it’s owned by a younger boss.
Due to no moons
around Mars, the employees can only get the salaries per-year. There are n
employees in ACM, and it’s time for them to get salaries from their boss. All
employees are numbered from 1 to n. With the unknown reasons, if the employee’s
work number is k, he can get k^4 Mars dollars this year. So the employees
working for the ACM are very rich.
Because the number of employees is so
large that the boss of ACM must distribute too much money, he wants to fire the
people whose work number is co-prime with n next year. Now the boss wants to
know how much he will save after the dismissal.
number of test cases. (1 ≤ T ≤ 1000) Each test case, there is only one integer
n, indicating the number of employees in ACM. (1 ≤ n ≤ 10^8)
money the boss can save. Because the answer is so large, please module the
answer with 1,000,000,007.
4
5
354
Case1: sum=1+3*3*3*3=82
Case2: sum=1+2*2*2*2+3*3*3*3+4*4*4*4=354
http:
//acm.hdu.edu.cn/showproblem.php?pid=4059
///这题主要是公式问题,然后稍微对容斥原理计算个数,改为mult的特殊利用即可;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
///1~n这n个数的4次方和:n*(n+1)*(6*n*n*n+9*n*n+n-1)/30; 这里百度的公式;
typedef long long ll;
const ll N = 1e6+5;
const ll mod = 1e9+7;
ll n, ans;
ll get4mult(ll mult)
{
return
mult*mult%mod*mult%mod*mult%mod;
}
ll extgcd(ll a,ll b,ll &x,ll &y)
{
if
(b==0){
x = 1, y = 0;
return
a;
}
ll d = extgcd(b,a%b,x,y);
ll t = x;
x = y;
y = t-a/b*y;
return
d;
}
ll inverse(ll t)
{
ll x, y;
ll d = extgcd(t,mod,x,y);
return
(x%mod+mod)%mod;
}
ll calu(ll n)
{
return
n*(n+1)%mod*(6*n*n%mod*n%mod+9*n*n%mod+n-1)%mod*inverse(30)%mod;
}
ll rongchi(ll n)
{
ll m = n;
vector<ll> v;
for
(ll i = 2; i*i <= m; i++){
if
(m%i==0){
v.push_back(i);
while
(m%i==0) m/=i;
}
}
if
(m>1) v.push_back(m);
ll len = v.size();
for
(ll i = 1; i < (1<<len); i++){
ll mult = 1, ones = 0;
for
(ll j = 0; j < len; j++){
if
(i&(1<<j)){
ones++;
mult = mult*v[j];
}
}
if
(ones%2) {
/// 变成了 - 因为假设是原来的容斥,那么cnt指的是不互质的个数,是要被剪掉的;
///而本题:也是要减掉,但是不是计算个数,而是对每一个过程有作用,减去:减变为了加,加变为了减;
ans = ans-get4mult(mult)*calu(n/mult);
ans = (ans%mod+mod)%mod;
}
else
/// 变成了 +
{
ans = ans+get4mult(mult)*calu(n/mult);
ans = (ans%mod+mod)%mod;
}
}
v.clear();
return
ans;
}
int main()
{
ll T;
cin>>T;
while
(T--)
{
cin>>n;
ans = calu(n);
printf(
"%lld\n"
,rongchi(n));
}
return
0;
}
The Boss on Mars的更多相关文章
- hdu4059 The Boss on Mars(差分+容斥原理)
题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设 则 为一阶差分. 二阶差分: n阶差分: 且可推出 性质: 1. ...
- HDU 4059 The Boss on Mars 容斥原理
The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu4059 The Boss on Mars
The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4059 The Boss on Mars(容斥原理 + 四次方求和)
传送门 The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 数论 + 容斥 - HDU 4059 The Boss on Mars
The Boss on Mars Problem's Link Mean: 给定一个整数n,求1~n中所有与n互质的数的四次方的和.(1<=n<=1e8) analyse: 看似简单,倘若 ...
- HDU 4059 The Boss on Mars(容斥原理)
The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 4059 The Boss on Mars
The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu4059 The Boss on Mars 容斥原理
On Mars, there is a huge company called ACM (A huge Company on Mars), and it’s owned by a younger bo ...
- zoj 3547 The Boss on Mars
需要用到概率论的容斥定理以及计算1 ^ 4 + 2 ^ 4 + ……+ n ^ 4的计算公式1^4+2^4+……+n^4=n(n+1)(2n+1)(3n^2+3n-1)/30 #pragma comm ...
随机推荐
- http://wsj356428476.iteye.com/blog/1655032
http://wsj356428476.iteye.com/blog/1655032 http://jingyan.baidu.com/article/19192ad83ce167e53e570705 ...
- hosts文件配置及主要作用
hosts文件位于" C:\Windows\System32\drivers\etc "目录下,用于转换名字与IP地址的转换. 在浏览器中通过域名访问网站,首先查看hosts文件中 ...
- 绘制函数 y=x^2-2x-3/2x^2+2x+1 的曲线
代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...
- vue - helloWorld
1.cdn概念:cdn全称内容分发网络,也是加速服务之一. 2.数据绑定:{{data}} 3.el属性(挂载对象):el:标签任意(例如:#app,.app,app) 4.data:{} => ...
- JS设计模式基础
设计模式: 通过封装.继承.多态.组合等技术的反复使用,提炼出一些可重复使用的面向对象设计技巧. 1.多态(’做什么‘和’谁去做‘分开) 多态指同一个实体同时具有多种形式. 同一操作应用于不同的对象上 ...
- Python中的关键字的用法
Python有哪些关键字 -Python常用的关键字 and, del, from, not, while, as, elif, global, or, with, assert, else, if, ...
- ant-design 设置 DatePicker 默认值
1.代码 render() { const { value } = this.props; return ( <React.Fragment> { value ? <DatePick ...
- es6 对象简化写法-函数
表达式还可以用于定义方法名. let obj = { ['h' + 'ello']() { return 'hi'; } }; obj.hello() // hi
- lodash获取数组或对象的值 at
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- java String->float,float->int
类型转换代码 : String sourceStr = "0.0"; String类型 float sourceF = Float.valueOf(sourceStr); floa ...