Find The Multiple POJ - 1426(只包含01的十进制倍数(同余模定理))
Find The Multiple POJ - 1426
为了避免各位没心情看我的TLE 的过程,直接告诉你,最后两个代码是AC代码
bfs一位一位枚举,知道会爆LONG LONG 还是怀着侥幸心理试了一下,结果是TLE 。。。
#include<iostream>
#include<cstdio>
#include<queue>
#define ll long long
using namespace std;int main() {// freopen("test.in", "r", stdin);int n;while(~scanf("%d", &n)) {queue<ll> Q;Q.push(1);while(!Q.empty()) {ll temp = Q.front();Q.pop();if(temp % n == 0) {printf("%lld\n", temp);break;}Q.push(temp*10);Q.push(temp*10+1);}}return 0;
}
又试了一发 __int64
哇的一声哭了出来,网上别人都能过,我就TLE了
#include<iostream>
#include<cstdio>
#include<queue>
#define ll __int64
using namespace std;int main() {// freopen("test.in", "r", stdin);int n;while(~scanf("%d", &n) && n) {queue<ll> Q;Q.push(1);while(!Q.empty()) {ll temp = Q.front();Q.pop();if(temp % n == 0) {printf("%I64d\n", temp);break;}Q.push(temp*10);Q.push(temp*10+1);}}return 0;
}
???一发dfs就过了 218
#include <iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
int n,flag;
void dfs(int step, ll y)//step为数的长度,y为要寻找的数
{if(step > 19 || flag == 1)//long long最大值为18位,flag保证找到这个数的时候中止return;if(y % n == 0){flag=1;printf("%lld\n", y);return;}dfs(step+1, y*10);dfs(step+1, y*10+1);
}int main()
{while(scanf("%d", &n) == 1 && n){flag=0;dfs(1,1);//从1开始深搜,初始长度为1}
}
老老实实用正解,同余方程
参考
参考2
不会证明直接用结论吧
取了 i 个余数
乘了 i 个10
答案的最低位 i%2
次低位 (i/2)%2
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 1e6;
int n;
int mod[maxn], ans[maxn];int main() {// freopen("test.in", "r", stdin); while(~scanf("%d", &n) && n) {mod[1] = 1 % n;int tmp = 2; // 一定要赋初值, 不然对 1 裂开 (我就因为没赋初值WA穿了)for(int i = 2; mod[i-1] != 0; i++) {mod[i] = (mod[i/2]*10+i%2)%n; // 模拟bfs末尾为1 或 0 的双入口 tmp = i;}int pos = 0;while(tmp) {ans[++pos] = tmp%2;tmp /= 2;} for(int i = pos; i >= 1; i--) printf("%d", ans[i]);printf("\n");}return 0;
}
Find The Multiple POJ - 1426(只包含01的十进制倍数(同余模定理))相关推荐
- Find The Multiple POJ - 1426 (BFS)
题目大意 给定一个整数,寻找一个只有0,1构成的十进制数使得这个数能够整除这个整数 解法 直接bfs第一位放入1,之后每一位放入1或者0 代码 #include <iostream> #i ...
- POJ 1426 Find The Multiple
解题思路: 1)每5位为一个基数,枚举5位所有只包含0,1的数ans[],map[i][j]保存(ans[j]*100000^i)%n的值 2)BFS计算所有组合出现的模,直到出现0 代码 #incl ...
- 如何检查一个Python字符串是否只包含数字?
如何检查一个Python字符串是否只包含数字? python String类中有一个名为isdigit()的方法,如果字符串中所有字符都是数字且至少有一个字符,则返回true,否则返回false. p ...
- 平安科技:传入一个只包含1-9的数字字符串,输出的是包含所有数字的最小整数
平安科技秋招笔试题: 传入一个只包含1-9的数字字符串,输出的是包含所有数字的最小整数.比如:输入"1992212",输出129. 实例: 输入 1992212 输出 129 思路 ...
- 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
问题:把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 通俗易懂的 ...
- puts遇到空格无法输出_输入一句英文,只包含字母和空格,如何输出这句英文中.....-黑马程序员技术交流社区...
//输入一句英文,只包含字母和空格,如何输出这句英文中的最长单词?再把每个单词的首字母转换成大写! #include #include int main(int argc, const char * ...
- java小编程----给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
package com.henu;import java.util.Arrays;/*** @author limengdong* @date 2019年7月19日* @classroom 208bi ...
- 只包含因子2 3 5的数(51nod 思维 打表)
K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如:n = ...
- C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。
1. 题目 假定输入的字符串中只包含字母和*号.请编写函数function,它的功能是:删除字符串中所有*号.在编写函数时,不得使用c语言提供的字符串函数. 2 .温馨提示 C语言试题汇总里可用于计算 ...
最新文章
- Tensorflow警告:our CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
- 报错解决:fatal error: json/json.h: No such file or directory
- jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法
- 中国大学MOOC 编译原理 第8讲测验(计分)
- 先序中序后序两两结合重建二叉树
- NeurIPS’20 | 长尾问题太严重?半监督和自监督就可以有效缓解!
- java解析简历_java:解析word文档(前程无忧简历),最好有代码案例?poi或者jacob解析都可以,有jar资源,求急。感谢...
- html5 职工入职后台管理系统_10个酷炫的后台模板
- 设计一个python程序来计算显示通过如图_Python程序设计 17计算机、物联网 合班-中国大学mooc-试题题目及答案...
- 20200202每日一句
- 用友u8不显示服务器名,用友u8提示对数据库服务器名
- el-dialog 圆角 白边问题
- ANT下载和配置 IDEA
- 物联网平台具体都有哪些特点
- opta planner_使用Excel Christmas Planner进行整理
- 如何使用Transformers和Tokenizers从头开始训练新的语言模型
- Parallel HDF5 简介
- IP座席接入系统方案
- app启动页html模板,APP引导页设计的五种常见表现方式
- 英语发音规则---E字母