UVA_10820_send a table
When participating in programming contests, you sometimes face the following problem: You know how to calcutale the output for the given input values, but your algorithm is way too slow to ever pass the time limit. However hard you try, you just can’t discover the proper break-off conditions that would bring down the number of iterations to within acceptable limits. Now if the range of input values is not too big, there is a way out of this. Let your PC rattle for half an hour and produce a table of answers for all possible input values, encode this table into a program, submit it to the judge, et voila: Accepted in 0.000 seconds! (Some would argue that this is cheating, but remember: In love and programming contests everything is permitted). Faced with this problem during one programming contest, Jimmy decided to apply such a ’technique’. But however hard he tried, he wasn’t able to squeeze all his pre-calculated values into a program small enough to pass the judge. The situation looked hopeless, until he discovered the following property regarding the answers: the answers where calculated from two integers, but whenever the two input values had a common factor, the answer could be easily derived from the answer for which the input values were divided by that factor. To put it in other words:
Say Jimmy had to calculate a function Answer(x,y) where x and y are both integers in the range [1,N]. When he knows Answer(x,y), he can easily derive Answer(k∗x,k∗y), where k is any integer from it by applying some simple calculations involving Answer(x,y) and k. For example if N = 4, he only needs to know the answers for 11 out of the 16 possible input value combinations: Answer(1,1), Answer(1,2), Answer(2,1), Answer(1,3), Answer(2,3), Answer(3,2), Answer(3,1), Answer(1,4), Answer(3,4), Answer(4,3) and Answer(4,1). The other 5 can be derived from them (Answer(2,2), Answer(3,3) and Answer(4,4) from Answer(1,1), Answer(2,4) from Answer(1,2), and Answer(4,2) from Answer(2,1)). Note that the function Answer is not symmetric, so Answer(3,2) can not be derived from Answer(2,3).
Now what we want you to do is: for any values of N from 1 upto and including 50000, give the number of function Jimmy has to pre-calculate.
Input
The input file contains at most 600 lines of inputs. Each line contains an integer less than 50001 which indicates the value of N. Input is terminated by a line which contains a zero. This line should not be processed.
Output
For each line of input produce one line of output. This line contains an integer which indicates how many values Jimmy has to pre-calculate for a certain value of N.
Sample Input
2
5
0
Sample Output
3
19
这道题很简单,,,,,一开始推就发现是在求互质数目*2。直接欧拉函数打表ok
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define N 1000010
#define maxn 50010
using namespace std;
bool vis[N];
int val[N];
int prime[N];
long long p[N];
int pn=0;
void gp()
{
for (int i = 2; i < N; i++) {
if (vis[i]) continue;
prime[pn++] = i;
val[i]=1;
for (int j = i; j < N; j += i)
vis[j]=1;
}
}
int main()
{
//freopen("datain.txt","r",stdin);
//freopen("dataout.txt","w",stdout);
p[1]=1;
//gp();
int i,j;
for(i=1; i<=maxn; i++)
p[i]=i;
for(i=2; i<=maxn; i+=2)
p[i]/=2;
for(i=3; i<=maxn; i+=2)
if(p[i]==i)
{
for(j=i; j<=maxn; j+=i)
p[j]=p[j]/i*(i-1);
}
for(int i=2;i<maxn;i++)
{
p[i]=p[i-1]+2*p[i];
}
int m,n;
while(~scanf("%d",&n),n)
{
cout<<p[n]<<endl;
}
}
UVA_10820_send a table的更多相关文章
- 散列表(hash table)——算法导论(13)
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...
- React使用antd Table生成层级多选组件
一.需求 用户对不同的应用需要有不同的权限,用户一般和角色关联在一起,新建角色的时候会选择该角色对应的应用,然后对应用分配权限.于是写了一种实现的方式.首先应用是一个二级树,一级表示的是应用分组,二级 ...
- 创建几个常用table展示方式插件
这次和大家分享的是自己写的一个table常用几种展示格式的js插件取名为(table-shenniu),样式使用的是bootstrap.min.css,还需要引用jquery.min.js包,这个插件 ...
- html中table边框属性
1.向右(横向)合并: <td colspan="5"><span>后台管理系统</span></td> 2.向下(纵向)合并: & ...
- MySQL中You can't specify target table for update in FROM clause一场
mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值 ...
- 打印Lua的Table对象
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...
- React中使用Ant Table组件
一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...
- css设置table表格tr分离
table { border-collapse:separate; border-spacing:10px 50px; }
- MySQL: Table 'mysql.plugin' doesn't exist的解决
安装解压版MySQL以后,不能启动,日志里面出现了这个错误: MySQL: Table 'mysql.plugin' doesn't exist 这是因为mysql服务启动时候找不到内置数据库&quo ...
随机推荐
- 3n+1猜想
1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...
- 项目中使用的spring 注解说明
以前在项目中spring 的依赖注入使用 xml 配置,现在使用 注解(Annotation) 来实现配置. 1声明bean 1.1实例 有类: public class MyBean{ //do s ...
- CSS3的Animation
1.animation-name :动画名 2.animation-duration:时间 3.animation-delay:延时 4.animation-iteration-co ...
- Android TextView之空格占位法
在Android布局中进行使用到空格,为了实现文字的对齐.具体要怎么使用了? •请忽视文中‘& #160’中&和#之间的空格 空格: & #160; 窄空格: & #8 ...
- 【Android学习入门】Android中activity的启动模式
启动模式简单地说就是Activity启动时的策略,在Androidmanifest.xml文件中的标签android:launchMode属性设置,在Android中Activity共有四种启动模式分 ...
- 夜色的 cocos2d-x 开发笔记 03
本章添加敌人,首先我们在.h文件里添加新的方法 之后进入.cpp文件,写出方法内容 当然还要调用一次,我把这个方法添加在了这里,也就是和发子弹是同步的,当然想要多久调用一次大家可以自己调整 运行一下 ...
- Mac下配置apach服务
有的时候,我们需要在内网工作组中分享一些文件或是后台接口没有及时给出,你又想要模拟真实数据,直接在项目里创建plist也可以做到这种需求,但难免让工程变得冗余且看起来比较Low.这个时候就看出配置本地 ...
- SQL查询某一字段重复的数据
查询出重复记录 select * from 数据表 WHERE 重复记录字段 in ( select 重复记录字段 from 数据表 group by 重复记录字段 having count(重复记 ...
- 08、Spark常用RDD变换
08.Spark常用RDD变换 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理.同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait ...
- DOM(四):h5扩展方法
getElementByClassName()方法getElementByClassName()方法接收一个参数,即一个包含一或多个类名的字符串,返回带有指定类的所有元素的NodeList //取得所 ...