zoukankan      html  css  js  c++  java
  • bzoj1101: [POI2007]Zap

    f[x]=∑gcd(i,j)=d

    F[x]=∑d|gcd(i,j)=n/d*m/d

    f[x]=∑i|d u(d/i)(n/d*m/d)

    #include<cstdio>
    #include<cstring>
    #include<cctype>
    #include<algorithm>
    using namespace std;
    #define rep(i,s,t) for(int i=s;i<=t;i++)
    #define dwn(i,s,t) for(int i=s;i>=t;i--)
    #define clr(x,c) memset(x,c,sizeof(x))
    int read(){
    	int x=0;char c=getchar();
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x;
    } 
    const int nmax=50005;
    const int inf=0x7f7f7f7f;
    int mo[nmax+1],pe[nmax>>3];bool vis[nmax+1];
    void init(){
    	mo[1]=1;int tp,cnt=0;
    	rep(i,2,nmax){
    		if(!vis[i]) pe[++cnt]=i,mo[i]=-1;
    		rep(j,1,cnt){
    			tp=pe[j];if(tp*i>nmax) break;vis[tp*i]=1;
    			if(i%tp==0) {
    				mo[i*tp]=0;break;
    			}mo[i*tp]=-mo[i];
    		}
    	}
    	rep(i,2,nmax) mo[i]+=mo[i-1];
    }
    int main(){
    	int n=read(),u,v,d,tp,ans,last;init();
    	rep(i,1,n){
    		u=read(),v=read(),d=read();
    		u/=d,v/=d;ans=0;
    		if(u>v) swap(u,v);
    		for(int j=1;j<=u;j=last+1){
    			last=min(u/(u/j),v/(v/j));
    			ans+=(u/j)*(v/j)*(mo[last]-mo[j-1]);
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

    1101: [POI2007]Zap

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 2179  Solved: 843
    [Submit][Status][Discuss]

    Description

      FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a
    ,y<=b,并且gcd(x,y)=d。作为FGD的同学,FGD希望得到你的帮助。

    Input

      第一行包含一个正整数n,表示一共有n组询问。(1<=n<= 50000)接下来n行,每行表示一个询问,每行三个
    正整数,分别为a,b,d。(1<=d<=a,b<=50000)

    Output

      对于每组询问,输出到输出文件zap.out一个正整数,表示满足条件的整数对数。

    Sample Input

    2
    4 5 2
    6 4 3

    Sample Output

    3
    2
    //对于第一组询问,满足条件的整数对有(2,2),(2,4),(4,2)。对于第二组询问,满足条件的整数对有(
    6,3),(3,3)。

    HINT

     

    Source

     
    [Submit][Status][Discuss]
  • 相关阅读:
    R语言数据框部分笔记
    R语言数组部分的笔记
    R语言向量部分的笔记
    计算机等级考试二级python 第二章 python的基本语法元素
    计算机二级教程python第一章 程序设计语言
    Linux C实现发邮件功能
    telnet收发邮件
    Linux进(线)程同步各种锁
    About Mutex
    wait()与waitpid()与pthread_join()
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5886294.html
Copyright © 2011-2022 走看看