Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

门上有着N个宝珠,每个宝珠都有一个数字。Mini询问老者后,得知要想打开这扇门,就得找出两颗珠宝,使这两颗珠宝撞在一起

后产生的能量值最接近123。

两颗珠宝撞在一起以后产生的能量值的计算方法是:将两个珠宝所代表的数字转换为7进制的数后,一一对照这两个七进制数的

每一位,若相同,则结果为0否则为1。

如:两颗珠子所代表的数为18和370,将这两个数转化为7进制后是24和1036,对于高位不足的数,采取高位添‘0’的方法,即两个

数为0024,1036。最后得到的能量值C为1011,再将C当作二进制数转换为十进制数。那么转换后的C就为这两个珠撞在一起以后

所产生的能量值。

【样例说明】

370和78这两颗宝珠所产生的能量值15最接近123

【输入格式】

第一行一个数N,表示宝珠的数量。(2<=N<=900) 第二行N个数,每个数用空格隔开,每个数表示第I个宝珠所代表的数字(0<=每个数<=11111)

【输出格式】

一个数,代表你所找到的最接近123的能量值

Sample Input

5

18 370 45 36 78

Sample Output

15

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t066

【题解】



O(N^2)枚举两个珠宝;

按照所给规则尝试合并它们;

10进制转7进制;

两个7进制根据相同为0,不同为1的规则转成一个2进制;

然后2进制转成10进制;

看看是不是和123的差距更小;更小就更新答案呗.

时间复杂度O(N^2);

(写时间复杂度真的是为了装逼哦[斜眼笑])



【完整代码】

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back
const int MAXN = 900+100; int n,a[MAXN];
int ans = -1,t;
vector <int> two; vector <int> get7(int x)
{
vector <int> g;
g.clear();
while (x>0)
{
g.pb(x%7);
x/=7;
}
return g;
} int main()
{
// freopen("F:\\rush.txt","r",stdin);
int now = 1;
while (now<10e8)
{
two.pb(now);
now <<=1;
}
scanf("%d",&n);
for (int i = 1;i <= n;i++)
scanf("%d",&a[i]);
for (int i = 1;i <= n-1;i++)
for (int j = i+1;j <= n;j++)
{
vector<int> x = get7(a[i]),y = get7(a[j]);
int lenx = x.size(),leny = y.size();
int len = max(lenx,leny);
while (int(x.size())<len) x.pb(0);
while (int(y.size())<len) y.pb(0);
reverse(x.begin(),x.end());
reverse(y.begin(),y.end());
vector<int> v;
v.clear();
for (int i = 0;i <= len-1;i++)
if (x[i]==y[i])
v.pb(0);
else
v.pb(1);
reverse(v.begin(),v.end());
int xx = 0;
for (int i = 0;i <= len-1;i++)
xx+=v[i]*two[i];
if (ans==-1)
{
ans = xx;
t = abs(ans-123);
}
else
{
int tt = abs(xx-123);
if (tt<t)
{
ans = xx;
t = tt;
}
}
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. godaddy域名使用DNSPod做DNS解析图文教程
  2. XML代码生成器——XMLFACTORY 简介(二)
  3. codevs4247奇特的生物 解析报告
  4. Git差异比对
  5. 指针属性直接赋值 最好先retain 否则内存释放导致crash
  6. cocos2d-x 1970毫秒数转时间
  7. gson使用详解
  8. C++ Primer 学习笔记_56_ 类和数据抽象 --消息处理演示示例
  9. luogu P1007 独木桥
  10. [LeetCode] Flood Fill 洪水填充
  11. web进修之—Hibernate起步(1)(2)
  12. mongoDB 集合(表)操作
  13. Django Form和ModelForm组件
  14. html取消回车刷新提交
  15. day063 form 和modelform组件
  16. 在做销售录入界面时,如何使用dbgrid?(50分)
  17. BZOJ4502串——AC自动机(fail树)
  18. 将数组,矩阵存入csv文件中
  19. python 实现排序算法(三)-选择排序和冒泡排序
  20. 《算法》第四章部分程序 part 16

热门文章

  1. python 正则表达式简介
  2. python三种导入模块的方法和区别
  3. padas操作
  4. 反射技术的入口 获取类的Class信息
  5. python 错误类型
  6. 条件变量用例--解锁与signal的顺序问题
  7. 【NS2】ns2 otcl与c++关联(转载)
  8. 用select提取List元素自身序号
  9. 阿里云发布 Redis 5.0 缓存服务:全新 Stream 数据类型带来不一样缓存体验
  10. SecureCRT 7.1.1和SecureFx key 亲测可用