hdu2248
纷菲幻剑录 之 十年一剑
Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 497 Accepted Submission(s): 299
带着最初的梦想,穿过孤烟大漠,踏进这个繁杂的中原,心中的目标始终不曾改变......
(以上是亦纷菲感人肺腑的吟诗,字字珠玑,句句恳切)
(以下是ZTY描述的中原故事虚构:大意是灭“深犬”-_-||,救pacision)
说时迟,那时快,亦纷菲拿出他的幻剑向深犬刺去,可惜啊可惜~~可惜什么呢? 那么我们先来进m段广告,每段广告又分为s段小广告(因为广告太费时间, 而且试问做题的时候怎么能看广告呢,所以这里就把广告这一段略去了,不知大家意下如何? 如果同意的话那就继续读题)话说当时亦纷菲拿出他的幻剑向深犬刺去, first blood !可惜事情并没有那么简单, 眼看深犬奄奄一息之时,天上下起了甘露,"深犬进化!"深犬大喊, "迭代深犬!!!", 原来深犬汲取日月之精华,天地之灵气, 进化成了无坚不摧,以一敌万的"迭代深犬",亦纷菲知道此时的他已然不敌,于是万般无奈之下他决定暂避锋芒,使出一招"凌波微步",消失在灯火阑珊处,谁料亦纷菲的幻剑竟然留在了迭代深犬那里,又不好意思回去拿,只好求助<英雄哪里出来>,<英雄哪里出来>是一位隐藏人物,据说出没于幽云十六州,由于世俗纷争,是故退隐山林,因为十年前遇上亦纷菲,又因为一饭之恩以幻剑相赠,可惜铸造幻剑需要一把以类铸成的宝剑镶上h(1 <= h <= n)颗壮志凌云石方可铸造成功,于是亦纷菲花了五年写了个类,并且将之铸成宝剑,再去找<英雄哪里出来>,这时<英雄哪里出来>说五年前他说的话中有错别字,是"以泪铸成的宝剑", 而不是"以类铸成的宝剑","挫折,真的是人生要走的路吗?"亦纷菲耳边回荡起这句话,但试问亦纷菲又怎么会轻言放弃, 又是五年不眠不休铸造出了"以泪铸成的宝剑"(所谓“以泪铸成的宝剑”的特殊之处在于它的每一个部分都是一个数字1,共有g个部分,当g == 3,就是111,g == 4 时,就是1111,而且要保证它能够铸成幻剑的必要条件是由g必须为素数,比如3为素数,所以它有机会成为幻剑,但是这仅仅是必要条件),接下来的工作找到h颗壮志凌云石,但是<英雄哪里出来>给了亦纷菲 n(3 <= n <= 20000)颗壮志凌云石,每颗都有颜色,用一个正整数t(0 <= t <= n)来表示,将这些石头排成一排,让你挑出其中连续的h颗,但是壮志凌云石之间有"异元互质"作用,听黑衣人说,如果h颗满足"灵异约束",那么他们之间没有"异元互质",是可以铸成幻剑的,所谓灵异约束就是说任意选择连续h颗,总和sum % n == 0 则称这h颗石头满足灵异约束。
(以下是亦纷菲亲笔)
材料已有还需打造之法,询问<英雄哪里出来>,想要得知打造之法需要回答<英雄哪里出来>的一个问题。题意是 给你2个整数 x,k. (1<=x<6400000 && 0<k<=2^31-1),要你找出 x 的第k大 素因子(如果不存在回答"no")for example x=48, k=6. 48分解的{2,2,2,2,3} 所以1-4大素因子都是2,第5大是3,比5大则没有,
成功铸得幻剑后,挑战深犬。 但深犬也要你回答一道题目方能和接受你的挑战(-_-||汗~~~),题意是这样的,用剑气在悬崖壁上刻出2^n
(1=<n<=20000);
当然这对亦纷菲来说自然是不在话下,轻松解决,于是大战犹如箭在弦上,一触即发!
(待续...)
1.判断一把剑是否有机会成为幻剑
2.找出符合题意的壮志凌云石
3.从<英雄哪里出来>口中得知打造之法
4.回答深犬的问题
首先输入一个字符串Str,该字符串有四种形式:
(1)Swords 然后跟一个整数num,该数字全部由1组成,保证数字长度小于一百;
(2)Stones 然后跟一个整数n(3 <= n <= 20000),接下来一行输入n个数字;
(3)Search 然后跟着2个整数x,k,(1<=x<6400000 && 0<k<=2^31-1);
(4)See 然后跟着1个整数n,(1=<n<=16000);
(1)Swords 输出亦纷菲对num的判断,如果num所代表的宝剑有机会成为幻剑输出"Yes.",否则输出"No.";
(2)Stones 输出被亦纷菲选中的壮志凌云石的下标(递增输出,两个之间有一个空格),如果有多个答案,那么满足以下优先级,
首先如果存在多个满足条件的序列,那么输出长度最小的(即题目中h最小的),若果还是有多解,那么输出下标之和最小的;
如果不能找到,那么输出"可怜的亦纷菲!".
(3)输出 x 的第k大素因子(如果不存在输出 "no").
(4)输出 一个整数 2^n .
Swords 1111
Stones 4
1 3 3 4
Stones 6
1 1 1 1 1 1
Search
3 1
Search
6 2
Search
48 6
See
2
See
20
No.
4
1 2 3 4 5 6
3
3
no
4
1048576
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<iomanip>
#define INF 99999999
using namespace std; const int MAX=20000+10;
const int Base=10000;
int s[MAX],n;//s[j]记录的前i个数mod n为j的最后一个位置
char str[110];
int temp[3000],sum[3000],A[3000];
bool prime[110]; void Prime(){
prime[1]=true;
for(int i=2;i*2<=100;++i)prime[i*2]=true;
for(int i=3;i*i<=100;++i){
if(!prime[i]){
for(int j=i*i;j<=100;j+=2*i)prime[j]=true;
}
}
} int factor(int x,int k){
int num=0;
while(x%2 == 0)++num,x=x/2;
if(num>=k)return 2;
for(int i=3;i*i<=x;i+=2){
if(x%i == 0){
while(x%i == 0)++num,x=x/i;
if(num>=k)return i;
}
}
if(x != 1)++num;
if(num>=k)return x;
return 0;
} void Mult(int *A,int *B){
int l=A[0]+B[0]-1,i,j,k;
memset(temp,0,sizeof(int)*(l+3));
for(i=1,k=1;i<=A[0];++i){
k=i;
if(A[i]){//为0本次就不用计算了
for(j=1;j<=B[0];++j,++k){
temp[k]+=A[i]*B[j];
if(temp[k]>=Base){
temp[k+1]+=temp[k]/Base;
temp[k]=temp[k]%Base;
}
}
}
}
while(temp[k]>=Base){
temp[k+1]+=temp[k]/Base;
temp[k]=temp[k++]%Base;
}
if(!temp[k])--k;
A[0]=k;
for(i=1;i<=k;++i)A[i]=temp[i];
} void FastPow(int k){
sum[0]=1,sum[1]=1;
A[0]=1,A[1]=2;
while(k){
if(k&1)Mult(sum,A);
Mult(A,A);
k>>=1;
}
} void problem1(){
scanf("%s",str);
int num=strlen(str);
if(!prime[num])printf("Yes.\n");
else printf("No.\n");
} void problem2(){
int a,l=INF,p,k,t=0;
scanf("%d",&n);
memset(s+1,-1,sizeof(int)*(n+1));
s[0]=0;
for(int i=1;i<=n;++i){
scanf("%d",&a);
p=(t+a)%n;
if(s[p] != -1)if(i-s[p]<l)l=i-s[p],k=s[p]+1;//k记录满足条件的开始位置
s[p]=i;
t=p;
}
if(l == INF)printf("可怜的亦纷菲!\n");
else{
for(int i=k;i<k+l-1;++i)printf("%d ",i);
printf("%d\n",k+l-1);
}
} void problem3(){
int x,k;
scanf("%d%d",&x,&k);
int temp=factor(x,k);
if(temp)printf("%d\n",temp);
else printf("no\n");
} void problem4(){
scanf("%d",&n);
FastPow(n);
printf("%d",sum[sum[0]]);
for(int i=sum[0]-1;i>0;--i)printf("%04d",sum[i]);
printf("\n");
} int main(){
Prime();
while(~scanf("%s",str)){
if(strcmp(str,"Swords") == 0)problem1();
else if(strcmp(str,"Stones") == 0)problem2();
else if(strcmp(str,"Search") == 0)problem3();
else problem4();
}
return 0;
}
hdu2248的更多相关文章
随机推荐
- POJ 1681 Painter's Problem (高斯消元 枚举自由变元求最小的步数)
题目链接 题意: 一个n*n 的木板 ,每个格子 都 可以 染成 白色和黄色,( 一旦我们对也个格子染色 ,他的上下左右 都将改变颜色): 给定一个初始状态 , 求将 所有的 格子 染成黄色 最少需要 ...
- JAVA将Excel中的报表导出为图片格式(二)实现思路
接上文,一封类似于下方设计的Excel报表,如何将它指定的区域导出为样式一模一样的JPG图片呢? 要实现这个功能没有现成的解决方案,谷歌度娘了好久也没有,最终自己想了几条思路: 思路1:将报表中的背景 ...
- sql server 数据库 ' ' 附近有语法错误
昨天做项目时候,遇到标题的问题,代码跟踪把sql 语句 复制出来在数据库执行不了, 然后重新写个一模一样的,然后在 赋值到代码中,还是同样的错误, 就是不知道哪里出现了错误,最后 把 sql 语句写成 ...
- FileZilla无法确定拖放操作的目标,由于shell未正确安装
天有不测风云,突然间,用filezilla下载ftp上的文件到桌面的时候,提示"无法确定拖放操作目标.由于shell未正确安装" 解决办法很简单,执行如下几步就OK了 1.在CMD ...
- QQ在线图标 离线 QQ开通在线QQ服务 QQ陌生人直接聊天
如图 永远都显示离线,即使QQ在线也显示离线的原因和解决方法 1:打开 这个页面 提示你开通 你就点击一下开通 这样头像就可以正常显示 离线 和在线了 http://wp.q ...
- 纯css做的安卓开机动画
随着css3的发展,越来越多的负责绚丽的效果可以由纯css来完成了.用css3实现的动画效果丝毫不必js实现的逊色,而且浏览器对css渲染的速度远比js快,大多数时候css的体积也不js小.其中css ...
- DrawDib函数组的使用
Microsoft的针对与设备无关位图(DIB位图),在其WIN32 SDK的Multimedia中提供了一组绘制DIB位图的高性能函数组──DrawDib函数组.DrawDib函数组是一组不依赖于图 ...
- 【转】让 cocos2d-x 的 CCHttpRequest 支持https
肖锐(Cooki)个人原创,欢迎转载,转载请注明地址,肖锐(Cooki)的技术博客 http://blog.csdn.net/xiao0026 由于游戏用到了网络头像, 今天发现换成facebook ...
- IT经理,你在这个位置吗
事实上我离这个位置还远着,或者说它可能并不是我以后的方向,但是作为一个码农,这个发展路线还是需要了解的.主要的还是喜欢下面这个图,因为里面我的发展方向,有我的目标. 对 于一个IT从业者,让你谋得工作 ...
- window.history
作者:zccst 旧版: forword() backword() go(number) HTML5中新增了 onhashchange 浏览器兼容性较好,用得较多 pushState / repla ...