博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3435 Ideal Puzzle Bobble
阅读量:5949 次
发布时间:2019-06-19

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

ZOJ Problem Set - 3435
Ideal Puzzle Bobble

Time Limit: 2 Seconds      
Memory Limit: 65536 KB

Have you ever played Puzzle Bobble, a very famous PC game? In this game, as a very cute bobble dragon, you must keep shooting powerful bubbles to crush all the colorful bubbles upwards. Victory comes when all the bubbles upwards are crushed.

Little Tom is crazy about this game. One day, he finds that all kinds of Puzzle Bobble are 2D Games. To be more excited when playing this game, he comes up with a new idea to design a 3D Puzzle Bobble game! In this game, the bobble dragon is standing in a cubic room with L in length, W in width and H in height. Around him are so many colorful bubbles. We can use 3D Cartesian coordinates (xyz) to represent the locations of the bobble dragon and those bubbles. All these coordinates (xyz) are triple positive integers ranged from (111) to (LWH).

To simplify the problem, let's assume the bobble dragon is standing at (111) in the room. And there is one colorful bubble at every (xyz) in the room except (111). The dragon is so strong that he can shoot out a magical bubble to crush all the colorful bubbles in the straight line which the magical bubble flies every single time. Note that bubbles are significantly small with respect to the distances between each two bubbles. Our question remains, how many magical bubbles will the cute dragon shoot before crushing all the colorful bubbles around him?

Input

There are multiple cases, no more than 200. Each case contains one single line. In this line, there are three positive integers LW and H (2 ≤ L, W, H ≤ 1000000) which describes the size of the room. Proceed to the end of the file.

Output

For each case, print the number of the magical bubbles needed to crush all the colorful bubbles in one line.

Sample Input

2 2 23 3 3

Sample Output

719

Author: 
ZHU, Yuke
Contest: 
ZOJ Monthly, November 2010

  求(1,1,1)至(x,y,z)的互质个数。

  即求(0,0,0)到(x-1,y-1,z-1)互质个数。

  剩下的同

#include
#include
#ifdef WIN32#define LL "%I64d"#else#define LL "%lld"#endifusing namespace std;typedef long long ll;const int M=1e6+5;int L,W,H,T;ll sum[M];int tot,prime[M/3],mu[M];bool check[M];void sieve(){ int n=1e6;mu[1]=1; for(int i=2;i<=n;i++){ if(!check[i]) prime[++tot]=i,mu[i]=-1; for(int j=1;j<=tot&&i*prime[j]<=n;j++){ check[i*prime[j]]=1; if(!(i%prime[j])){mu[i*prime[j]]=0;break;} else mu[i*prime[j]]=-mu[i]; } } for(int i=1;i<=n;i++) sum[i]=sum[i-1]+mu[i];}inline ll solve(int x,int y,int z){ int t=min(x,min(y,z)); ll ans=3; for(int i=1,pos;i<=t;i=pos+1){ pos=min(x/(x/i),min(y/(y/i),z/(z/i))); ans+=1LL*(x/i)*(y/i)*(z/i)*(sum[pos]-sum[i-1]); } t=min(x,y); for(int i=1,pos;i<=t;i=pos+1){ pos=min(x/(x/i),y/(y/i)); ans+=1LL*(x/i)*(y/i)*(sum[pos]-sum[i-1]); } t=min(y,z); for(int i=1,pos;i<=t;i=pos+1){ pos=min(y/(y/i),z/(z/i)); ans+=1LL*(y/i)*(z/i)*(sum[pos]-sum[i-1]); } t=min(x,z); for(int i=1,pos;i<=t;i=pos+1){ pos=min(x/(x/i),z/(z/i)); ans+=1LL*(x/i)*(z/i)*(sum[pos]-sum[i-1]); } return ans;}int main(){ sieve(); while(~scanf("%d%d%d",&L,&W,&H)){ L--,W--,H--; printf(LL"\n",solve(L,W,H)); } return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/6750052.html

你可能感兴趣的文章
nagios安装笔记(仅安装无配置)
查看>>
Windows批处理学习(二)——批处理(3)
查看>>
敏捷开发般若敏捷系列之五:如何推广敏捷(中)(无寿者,回报,破我执)...
查看>>
邱县祥云网站上线了
查看>>
mysql优化和索引
查看>>
大学生暑期实践活动---关注少数民族孤寡老人
查看>>
linux学习之查看程序端口占用情况
查看>>
linux下配置安装OpenJDK+Tomcat
查看>>
相逢在栀枝花开的季节
查看>>
Ajax实现直链(点击量统计)
查看>>
linux下git自动补全命令
查看>>
Ubuntu14.04LTS更新源
查看>>
Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
查看>>
oracle分区表、分区索引
查看>>
Tomcat+memcached+Nginx实现session共享
查看>>
Array operation
查看>>
Python基础学习三 文件操作(一)
查看>>
微信小程序实例源码大全
查看>>
Raid小知识
查看>>
Linux常用命令总结之(六)whereis
查看>>