1054 - Efficient Pseudo Code
| Time Limit: 1 second(s) | Memory Limit: 32 MB |
Sometimes it's quite useful to write pseudo codes for problems. Actually you can write the necessary steps to solve a particular problem. In this problem you are given a pseudo code to solve a problem and you have to implement the pseudo code efficiently. Simple! Isn't it? :)
pseudo code
{
take two integers n and m
let p = n ^ m (n to the power m)
let sum = summation of all the divisors of p
let result = sum MODULO 1000,000,007
}
Now given n and m you have to find the desired result from the pseudo code. For example if n = 12 and m = 2. Then if we follow the pseudo code, we get
pseudo code
{
take two integers n and m
so, n = 12 and m = 2
let p = n ^ m (n to the power m)
so, p = 144
let sum = summation of all the divisors of p
so, sum = 403, since the divisors of p are 1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 36, 48, 72, 144
let result = sum MODULO 1000,000,007
so, result = 403
}
Input
Input starts with an integer T (≤ 5000), denoting the number of test cases.
Each test case will contain two integers, n (1 ≤ n) and m (0 ≤ m). Each of n and m will be fit into a 32 bit signed integer.
Output
For each case of input you have to print the case number and the result according to the pseudo code.
Sample Input |
Output for Sample Input |
|
3 12 2 12 1 36 2 |
Case 1: 403 Case 2: 28 Case 3: 3751 |
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<stdlib.h>
6 #include<queue>
7 #include<stack>
8 using namespace std;
9 bool prime[1000000];
10 int ans[1000000];
11 int mod=1e9+7;
12 typedef long long LL;
13 typedef struct pp
14 {
15 int x;
16 int y;
17 } ss;
18 ss sum[1000];
19 stack<ss>que;
20 LL quick(LL n,LL m);
21 int main(void)
22 {
23 memset(prime,0,sizeof(prime));
24 int i,j,k;
25 for(i=2; i<=1000; i++)
26 {
27 if(!prime[i])
28 {
29 for(j=i; (i*j)<=1000000; j++)
30 {
31 prime[i*j]=true;
32 }
33 }
34 }
35 int cnt=0;
36 for(i=2; i<=1000000; i++)
37 {
38 if(!prime[i])
39 {
40 ans[cnt++]=i;
41 }
42 }
43 scanf("%d",&k);
44 int s;
45 LL x,y;
46 for(s=1; s<=k; s++)
47 {
48 scanf("%lld %lld",&x,&y);
49 int tt=0;
50 int id=0;
51 int an=0;
52 while(x>1&&tt<cnt)
53 {
54 if((LL)ans[tt]*(LL)ans[tt]>x)
55 { if(an!=0)
56 {
57 ss dd;
58 dd.x=ans[tt];
59 dd.y=an;
60 que.push(dd);
61 an=0;
62 }
63 break;
64 }
65 else if(x%ans[tt]==0)
66 {
67 an++;
68 x/=ans[tt];
69 if(x==1)
70 { ss dd;
71 dd.x=ans[tt];
72 dd.y=an;
73 que.push(dd);
74 an=0;
75 }
76 }
77 else if(x%ans[tt]!=0)
78 {
79 if(an!=0)
80 {
81 ss ask;
82 ask.x=ans[tt];
83 ask.y=an;
84 que.push(ask);
85 an=0;
86 }
87 tt++;
88 }
89 }
90 if(!que.empty())
91 {
92 ss ap=que.top();
93 if(x!=1)
94 {
95 if(x!=ap.x)
96 {
97 ss ask;
98 ask.x=x;
99 ask.y=1;
100 que.push(ask);
101 }
102 else
103 {
104 ss dd=que.top();
105 que.pop();
106 dd.y+=1;
107 que.push(dd);
108 }
109 }
110 }
111 else
112 {
113
114 if(x!=1)
115 {
116 ss ask;
117 ask.x=x;
118 ask.y=1;
119 que.push(ask);}
120
121 }
122 int vv=0;
123 while(!que.empty())
124 {
125 sum[vv]=que.top();
126
127 que.pop();
128 vv++;
129 }
130 LL ac=1;
131 for(i=0; i<vv; i++)
132 {
133 //printf("%d %d\n",sum[i].x,sum[i].y);
134 LL q=sum[i].x-1;
135 LL ni=quick((LL)q,(LL)(mod-2));
136 LL r=(sum[i].y*y+1)%(mod-1);
137 LL p=quick((LL)sum[i].x,(LL)(r));
138 p-=1;
139 p=(p%mod+mod)%mod;
140 p=p*ni%mod;
141 ac=ac*p%mod;
142 }
143 printf("Case %d:",s);
144 printf(" %lld\n",ac%mod);
145 }
146 return 0;
147 }
148 LL quick(LL n,LL m)
149 {
150 LL ak=1;
151 n%=mod;
152 while(m)
153 {
154 if(m&1)
155 {
156 ak=(ak%mod)*(n%mod)%mod;
157 }
158 n=(n*n)%mod;
159 m/=2;
160 }
161 return ak;
162 }
1054 - Efficient Pseudo Code的更多相关文章
- Lightoj 1054 - Efficient Pseudo Code
题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1054 题目大意: 给出n,m,问n^m的所有因子之和是多少? 解题思路: 补 ...
- LightOj1054 - Efficient Pseudo Code ( 求n的m次方的因子和 )
题目链接:http://lightoj.com/volume_showproblem.php?problem=1054 题意:给你两个数n和m, 求n^m的所有因子和,结果对1000000007求余; ...
- Android Programming: Pushing the Limits -- Chapter 2: Efficient Java Code for Android
Android's Dalvik Java 与 Java SE 进行比较 Java代码优化 内存管理与分配 Android的多线程操作 Android’s Dalvik Java 与 Java SE ...
- 专题[vjudge] - 数论0.1
专题[vjudge] - 数论0.1 web-address : https://cn.vjudge.net/contest/176171 A - Mathematically Hard 题意就是定义 ...
- Oracle Applications Multiple Organizations Access Control for Custom Code
档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code ...
- PatentTips - Method and Apparatus to Support Virtualization with Code Patches
BACKGROUND As recognized in Revision 2.0 of the Intel® Virtualization Technology Specification for t ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- IT软件开发常用英语词汇
Aabstract 抽象的abstract base class (ABC)抽象基类abstract class 抽象类abstraction 抽象.抽象物.抽象性access 存取.访问access ...
随机推荐
- SpringBoot整合Shiro 二:Shiro配置类
环境搭建见上篇:SpringBoot整合Shiro 一:搭建环境 Shiro配置类配置 shiro的配置主要集中在 ShiroFilterFactoryBean 中 关于权限: anon:无需认证就可 ...
- 生产调优1 HDFS-核心参数
目录 1 HFDS核心参数 1.1 NameNode 内存生产配置 问题描述 hadoop-env.sh中配置 1.2 NameNode 心跳并发配置 修改hdfs-site.xml配置 1.3 开启 ...
- nodeJs-process对象
JavaScript 标准参考教程(alpha) 草稿二:Node.js process对象 GitHub TOP process对象 来自<JavaScript 标准参考教程(alpha)&g ...
- An internal error occurred during: “Updating Maven Project”. Unsupported IClasspathEntry kind=4解决办法
An internal error occurred during: "Updating Maven Project". Unsupported IClasspathEntry k ...
- Spring整合Ibatis之SqlMapClientDaoSupport
前言 HibernateDaoSupport SqlMapClientDaoSupport . 其实就作用而言两者是一样的,都是为提供DAO支持,为访问数据库提供支持. 只不过HibernateD ...
- redis入门到精通系列(一)
(一)为什么要用Nosql 如果你是计算机本科学生 ,那么一定使用过关系型数据库mysql.在请求量小的情况下,使用mysql不会有任何问题,但是一旦同时有成千上万个请求同时来访问系统时,就会出现卡顿 ...
- spring boot集成mybatis框架
概述 中文官网:http://www.mybatis.cn 参考教程:https://www.w3cschool.cn/mybatis MyBatis Plus:http://mp.baomidou. ...
- Hystrix断路器中的服务熔断与服务降级
一.Hystrix断路器 微服务架构特点就是多服务,多数据源,支撑系统应用.这样导致微服务之间存在依赖关系.如果其中一个服务故障,可能导致系统宕机,这就是所谓的雪崩效应. 1.为什么需要断路器 服务雪 ...
- 【Java 8】函数式接口(二)—— 四大函数接口介绍
前言 Java8中函数接口有很多,大概有几十个吧,具体究竟是多少我也数不清,所以一开始看的时候感觉一脸懵逼,不过其实根本没那么复杂,毕竟不应该也没必要把一个东西设计的很复杂. 几个单词 在学习了解之前 ...
- 利用ajax,js以及正则表达式来验证表单递交
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8" ...