三行写出莫比乌斯函数(HDU1695)

莫比乌斯函数是可以在三行内写出来的

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=1000000;
 5 int mu[maxn+10],T;
 6 void Mobius(){
 7     for(int d=1,k;d<=maxn;++d)
 8         for(mu[1]=1,k=d<<1;k<=maxn;mu[k]=mu[k]-mu[d],k+=d);
 9     for(int i=1;i<=maxn;++i)mu[i]+=mu[i-1];
10 }
11 int main(){
12     Mobius();
13     ios::sync_with_stdio(false);
14     cin>>T;
15     for(int kase=1,a,b,c,d,k;kase<=T;++kase){
16         cin>>a>>b>>c>>d>>k;
17         if(!k){
18             cout<<"Case "<<kase<<": 0"<<endl;
19             continue;
20         }
21         b/=k;d/=k;
22         if(b>d)b^=d^=b^=d;
23         ll ans1=0,ans2=0;
24         for(int i=1,t;i<=b;i=t+1){
25             t=min(b/(b/i),d/(d/i));
26             ans1+=1ll*(mu[t]-mu[i-1])*(b/i)*(d/i);
27         }
28         for(int i=1,t;i<=b;i=t+1){
29             t=b/(b/i);
30             ans2+=1ll*(mu[t]-mu[i-1])*(b/i)*(b/i);
31         }
32         ans1-=ans2/2;
33         cout<<"Case "<<kase<<": "<<ans1<<endl;
34     }
35 }
时间: 2024-10-09 12:50:50

三行写出莫比乌斯函数(HDU1695)的相关文章

1、使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数

<script type="text/javascript"> function papapa(x,y){ if(x>y|| x==y){ return x; }else{ return y; } } var a= papapa(1,9); alert(a) </script>

《Effective C 》资源管理:条款25--考虑写出一个不抛出异常的swap函数

条款25考虑写出一个不抛出异常的swap函数 条款25:考虑写出一个不抛出异常的swap函数 swap是STL中的标准函数,用于交换两个对象的数值.后来swap成为异常安全编程(exception-safe programming,条款29)的脊柱,也是实现自我赋值(条款11)的一个常见机制.swap的实现如下: namespace std{ template<typename T> void swap(T& a, T& b) { T temp(a); a=b; b=temp;

条款25:考虑写出一个不抛异常的swap函数

条款25:考虑写出一个不抛异常的swap函数 swap函数在C++中是一个非常重要的函数,但实现也非常复杂. 看一个缺省的std::swap函数的实现 namespace std { template<typename T> void swap( T& a , T& b) { T temp(a); a = b; b = temp } } ①内置类型的调用 int a = 2; int b =3; std::swap(a, b); cout<<"a:&quo

Effective C++ Item 25 考虑写出一个不抛异常的swap函数

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常 示例: stl里的swap算法 namespace std{ template<typename T> void swap(T &a, T &b){ T temp(a); a = b; b = temp; } } //"pimpl手法"(pointer

如何写出小而清晰的函数?(JS 版)

本文以 JavaScript 为例,介绍了该如何优化函数,使函数清晰易读,且更加高效稳定. 软件的复杂度一直在持续增长.代码质量对于保证应用的可靠性.易扩展性非常重要. 然而,几乎每一个开发者,包括我自己,在职业生涯中都见过低质量的代码.这东西就是个坑.低质量代码具备以下极具杀伤力的特点: 函数超级长,而且塞满了各种乱七八糟的功能. 函数通常有一些副作用,不仅难以理解,甚至根本没法调试. 含糊的函数.变量命名. 脆弱的代码:一个小的变更,就有可能出乎意料的破坏其他应用组件. 代码覆盖率缺失. 它

《Effective C++》item25:考虑写出一个不抛异常的swap函数

std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: int main(int argc, _TCHAR* argv[]) { int a[10] = {1,2,3,4,5,6,7,8,9,10}; vector<int> vec1(a, a + 4); vector<int> vec2(a + 5, a + 10); swap(vec1, vec2); for (int i =

c程序设计 8.15写几个函数:①输个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工

8.15写几个函数:①输个职工的姓名和职工号:②按职工号由小到大顺序排序,姓名顺序也随之调整:③要求输入一个职工号,用折半法找出该职工的姓名, 从主函数输入要查找的职工号,输出该职工. 写的时候为方便输入,我设的是输入3名职工的信息. #define N 3 #include <stdio.h> #define N 3 #define LEN 20 //定义一个结构体类型 struct student{ char name[LEN]; int num; }; int main(){ int n

数据结构与算法-字符串写出一个strlen函数

写出一个strlen函数 int strlen( const char *str ) //输入参数const { assert( str != NULL ); //断言字符串地址非0 int len=0; while( (*str++) != '' ) { len++; } return len; }

【c++】cout重载能不能写成成员函数,若能,写出函数原型,若不能,说明原因

// cout重载能不能写成成员函数,若能,写出函数原型,若不能,说明原因 #include <iostream> using namespace std; // cout做友元 class A; ostream& operator<<(ostream &out, const A &a); class A { friend ostream& operator<<(ostream &out, const A &a); pub