笨拙的手指

  • 方法一
  • 方法二


方法一

用暴力枚举法枚举出二进制所有的情况,化为十进制数存放在一个数组中,
然后再去枚举三进制所有的情况,化为十进制一一去和数组中的元素去匹配,如果相等就说明找到了答案,结束程序

1.将m进制的数转为十进制

int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i]-'0');}return ret;
}

2.去数组中找相等的数

int find(int* arr, int a,int len1)
{for (int i = 0; i < len1; i++){if (a == arr[i])return 1;}return 0;
}

3.完整代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i]-'0');}return ret;
}
int find(int* arr, int a,int len1)
{for (int i = 0; i < len1; i++){if (a == arr[i])return 1;}return 0;
}
int main()
{char a[11], b[11];scanf("%s", a);scanf("%s", b);int len1 = strlen(a);int len2 = strlen(b);int* ret1 = (int*)malloc(sizeof(int) * len1);for (int i = 0; i < len1; i++){a[i] ^= 1;ret1[i] = get(a, 2);a[i] ^= 1;}int p = 0;for (int i = 0; i < len2; i++){char t = b[i];for (int j = 0; j < 3; j++){b[i] = j + '0';int c = get(b, 3);if (find(ret1, c,len1) == 1){printf("%d",c);return 0;}b[i] = t;}}return 0;
}

方法二

枚举二进制的所有情况,化为三进制后,去和b比较,假如仅有一位不相同,则说明该情况就是正确答案,程序结束

  1. 二进制转化为十进制
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i] - '0');}return ret;
}

2.二进制转化为三进制

char* cp(char* a, int m)
{char* arr = (char*)malloc(sizeof(char) * 10);int temp = get(a, m);int i = 0;while (temp){arr[i] = temp % 3 + '0';temp /= 3;i++;}arr[i] = '\0';for (int j = 0; j < i / 2; j++){char t = arr[j];arr[j] = arr[i - j - 1];arr[i - j - 1] = t;}return arr;
}

3.统计每位不一样的个数

int count(char* a, char* b)
{int len1 = strlen(a);int len2 = strlen(b);if (len1 != len2)return 0;int count = 0;while (len2 >= 0 && len1 >= 0){if (a[len1] != b[len2])count++;len1--;len2--;}return count;
}

4.完整代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//二转十
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i] - '0');}return ret;
}
//二转三
char* cp(char* a, int m)
{char* arr = (char*)malloc(sizeof(char) * 10);int temp = get(a, m);int i = 0;while (temp){arr[i] = temp % 3 + '0';temp /= 3;i++;}arr[i] = '\0';for (int j = 0; j < i / 2; j++){char t = arr[j];arr[j] = arr[i - j - 1];arr[i - j - 1] = t;}return arr;
}
int count(char* a, char* b)
{int len1 = strlen(a);int len2 = strlen(b);if (len1 != len2)return 0;int count = 0;while (len2 >= 0 && len1 >= 0){if (a[len1] != b[len2])count++;len1--;len2--;}return count;
}
int main()
{char a[30], b[30];scanf("%s", a);scanf("%s", b);int len1 = strlen(a);int len2 = strlen(b);int* ret1 = (int*)malloc(sizeof(int) * len1);for (int i = 0; i < len1; i++){a[i] ^= 1;int t = count(b, cp(a, 2));if (t == 1){printf("%d", get(a, 2));return 0;}a[i] ^= 1;}
}

笨拙的手指——acwing算法题第一天相关推荐

  1. AcWing算法基础课 第一讲小结(持续更新中)

    目录 前言 一.快速排序法及其扩展 快速排序法 介绍 思路 + 步骤 模拟代入 模板 练习 扩展(求第k个数) 思路 代码 二.归并排序法 归并排序 思路 思路 + 步骤 模拟代入 模板 练习 应用( ...

  2. AcWing算法题常用代码模板

    一.基础算法 1.常用代码模板 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 算法步骤: ​ ①确定分界点 ​ ②调整区间 ​ ③递归处理左右两段 Tips: ​ ①如果输入数据量 ...

  3. AcWing算法基础课第一讲(2):高精度加减乘除、前缀和、差分

    文章目录 1. 高精度加法 2. 高精度减法 3. 高精度乘低精度 4. 高精度除以低精度 5. 一维前缀和 6. 二维前缀和 7. 一维差分 8. 二维差分 1. 高精度加法 这里讲解两个大整数的加 ...

  4. AcWing 算法基础课第一节基础算法1排序、二分

    1.该系列为ACWing中算法基础课,已购买正版,课程作者为yxc 2.y总培训真的是业界良心,大家有时间可以报一下 3.为啥写在这儿,问就是oneNote的内存不够了QAQ ACwing C++ 算 ...

  5. acwing算法题--铁路与公路

    原题链接:https://www.acwing.com/problem/content/description/4077/ #include <iostream> #include < ...

  6. acwing算法题--看图做题

    原题链接:https://www.acwing.com/problem/content/3992/ 找规律题 #include<iostream>using namespace std;i ...

  7. acwing算法题--不同的数

    原题链接:https://www.acwing.com/problem/content/3991/ #include <iostream> #include <unordered_m ...

  8. acwing算法题--二维费用的背包问题

    原题链接:https://www.acwing.com/problem/content/8/ #include <iostream>using namespace std;const in ...

  9. acwing算法题--混合背包问题

    原题链接:https://www.acwing.com/problem/content/7/ #include <iostream> #include <vector>usin ...

最新文章

  1. python与excel做数据可视化-Python的Excel操作及数据可视化
  2. flutter AppBar
  3. linux命令之查看文件内容加上行号-nl
  4. Spring Cloud(三) 熔断器Hystrix
  5. Android界面性能优化最全总结、原理剖析
  6. 05章 体检套餐管理系统
  7. Gamma Correction
  8. 【从理论到代码】旋转矩阵与欧拉角 一
  9. 为什么DNN的SectionHead Control图片无法显示,也无法折叠
  10. 嵌入式 Linux 4.0,嵌入式多媒体中心 OpenELEC 4.0.4
  11. 面包板电源线怎么接_如何维修面包板电源
  12. quartz 每月一次_quartz cron表达式 每周一0点怎么设置
  13. 【数据库】分布式数据库设计
  14. 火狐浏览器设置代理后出现“建立安全连接失败”问题的解决(由multisim引起
  15. Oracle 大表数据删除/清理方法小结
  16. [http]http转义和加解密方法
  17. 基于fastadmin的工业园区科技园水电费管理系统
  18. Centos7自动挂载Windows中的NTFS 分区
  19. res.data, res.data.data, res.data.data.rows的含义
  20. html移动端实现手写签名,signature手写签名实现,微信公众号浏览器html手写签名实现

热门文章

  1. TL-R402M路由器恢复出厂设置方法
  2. unable to access ‘https://github.com/XXX.git/‘: LibreSSL SSL_read: error:02FFF03C:system library:fun
  3. 20150113-下雨天在窗前
  4. ZUCC_计算机网络实验_实验01 实验一RJ45原理与制作
  5. Idea分享项目到全球最大同x交友网站gayhub居然失败了!我居然没有权限!来看看解决方法吧
  6. 形而上者谓之道,形而下者谓之器——asp.net学习总结
  7. 大数据开发第一站ODS篇
  8. 递 归 ,递 推 ,贪 心,学 习 总 结
  9. Tomcat报错系统找不到指定的路径
  10. ios 渐变透明背景_渐变色彩的室内应用技巧