UVA - 10825 Anagram and Multiplication
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34594
有一个m位n进制的数,它的特性是这个数依次乘以2,3.......m,最后得到的数仍然为这个数的某个排列,例如:
有一个6位十进制数:142857
2 x 142,857 = 285,714
3 x 142,857 = 428,571
4 x 142,857 = 571,428
5 x 142,857 = 714,285
6 x 142,857 = 857,142
那么输入6 10就应该有输出142857(假定这样的数有且仅有一个),如果没有,输出not find
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; int m,n,a[],b[],p[],aa[],ans[]; bool ak()
{
int c[];
for(int i=;i<m;i++) c[i]=b[i]=a[p[i]]; //生成待检测的数
for(int k=;k<=m;k++)
{
for(int i=;i<m;i++)
{
c[i+]+=(c[i]+b[i])/n; //不直接乘以k是因为每次c[i],b[i]才不方便初始到原有状 态
c[i]=(c[i]+b[i])%n;
}
for(int i=;i<m;i++) aa[i]=c[i];
sort(aa,aa+m);sort(ans,ans+m); //检验是否是原来的数的某个排列
for(int i=;i<m;i++)
if(aa[i]!=ans[i]) return ;
}
return ;
} bool dfs(int cur)
{
if(cur==m) return ak();
for(int i=cur;i<m;i++)
{
swap(p[cur],p[i]);
if(dfs(cur+)) return ;
swap(p[cur],p[i]);
}
return ;
} bool check(int x)
{
int t=;
for(int i=;i<m;i++)
{
t=(t+x)%n;
a[i]=t;
p[i]=i;
ans[i]=t;
}
return dfs();
} int main()
{
while(scanf("%d%d",&m,&n)!=EOF&&m)
{
int flag=;
for(int i=;i<n;i++)
{
if(check(i))
{
flag=;
break;
}
}
if(!flag)
printf("Not found.\n");
else
{
printf("%d",b[m-]);
for(int i=m-;i>=;i--)
printf(" %d",b[i]);
puts("");
}
}
return ;
}
UVA - 10825 Anagram and Multiplication的更多相关文章
- uva 10825 - Anagram and Multiplication(暴力)
题目链接:uva 10825 - Anagram and Multiplication 题目大意:给出m和n,要求找一个m位的n进制数,要求说该数乘以2~m中的随意一个数的结果是原先数各个位上数值的一 ...
- UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)
意甲冠军 由于矩阵乘法计算链表达的数量,需要的计算 后的电流等于行的矩阵的矩阵的列数 他们乘足够的人才 非法输出error 输入是严格合法的 即使仅仅有两个相乘也会用括号括起来 并且括号中 ...
- UVA——442 Matrix Chain Multiplication
442 Matrix Chain MultiplicationSuppose you have to evaluate an expression like A*B*C*D*E where A,B,C ...
- stack UVA 442 Matrix Chain Multiplication
题目传送门 题意:给出每个矩阵的行列,计算矩阵的表达式,如果错误输出error,否则输出答案 分析:表达式求值,stack 容器的应用:矩阵的表达式求值A 矩阵是a * b,B 矩阵是b * c,则A ...
- UVA 195 Anagram
题意:求输入字符串的所有组合,按字典序输出! 解法:使用枚举(枚举前先找出最字符串的最小字典序)枚举时加上枚举生成条件! #include <iostream> #include < ...
- UVa 442 Matrix Chain Multiplication(栈的应用)
题目链接: https://cn.vjudge.net/problem/UVA-442 /* 问题 输入有括号表示优先级的矩阵链乘式子,计算该式进行的乘法次数之和 解题思路 栈的应用,直接忽视左括号, ...
- UVA - 442 Matrix Chain Multiplication(栈模拟水题+专治自闭)
题目: 给出一串表示矩阵相乘的字符串,问这字符串中的矩阵相乘中所有元素相乘的次数. 思路: 遍历字符串遇到字母将其表示的矩阵压入栈中,遇到‘)’就将栈中的两个矩阵弹出来,然后计算这两个矩阵的元素相乘的 ...
- 例题6-3 Matrix Chain Multiplication ,Uva 442
这个题思路没有任何问题,但还是做了近三个小时,其中2个多小时调试 得到的经验有以下几点: 一定学会调试,掌握输出中间量的技巧,加强gdb调试的学习 有时候代码不对,得到的结果却是对的(之后总结以下常见 ...
- UVA 442 二十 Matrix Chain Multiplication
Matrix Chain Multiplication Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %l ...
随机推荐
- bzoj 4424: Cf19E Fairy && codeforces 19E. Fairy【树形dp】
参考:https://blog.csdn.net/heheda_is_an_oier/article/details/51131641 这个找奇偶环的dp1真是巧妙,感觉像tarjan一样 首先分情况 ...
- bzoj 1572: [Usaco2009 Open]工作安排Job【贪心+堆】
先按照时间顺序加,价值塞进小根堆里,碰到不合法情况就从堆里减去 #include<iostream> #include<cstdio> #include<queue> ...
- 平方分割poj2104K-th Number
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 59798 Accepted: 20879 Ca ...
- 利用Openfiler配置基于文件系统的网络存储
一.Openfiler简介 Openfiler是一个操作系统,其提供基于文件的网络附加存储和基于块的存储区域网络功能. Openfiler支持的网络协议包括:NFS,SMB/CIFS,HTTP/Web ...
- 记录sql操作
需求:一个a表的A列等于b表的B列 但拥有的相同列C列值不相同 需要将其改成一样的 UPDATE vd_auth_switch vas,tb_student ts set vas.class_id = ...
- 【转】rpm包和源码包安装的区别
转自:https://blog.csdn.net/junjie_6/article/details/59483785 建议在安装线上的生产服务器软件包时都用源码安装,这是因为源码安装可以自行调整编译参 ...
- [ Luogu 1273 ] 有线电视网
\(\\\) \(Description\) 一棵\(N\)个节点的树,编号在\([N-M+1,N]\)内的点必定为叶子节点,且这些点都有一个收益值\(Val_i\),同时每一条树边都有一个代价. 访 ...
- Android 仿微信调用第三方应用导航(百度,高德、腾讯)
实现目标 先来一张微信功能截图看看要做什么 其实就是有一个目的地,点击目的地的时候弹出可选择的应用进行导航. 大脑动一下,要实现这个功能应该大体分成两步: 底部弹出可选的地图菜单进行展示 点击具体菜 ...
- iOS中ARC和非ARC混用
如果在使用第三方类库的时候,我们可能会遇到一些内存管理的问题 那么如何在一个工程中实现ARC和非ARC混用呢,例如你创建一个ARC的工程,但是你引用的第三方类库是非ARC管理内存的 首先点击工 ...
- 浮动布局demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...