思路:
一个数若要恰好有九个约数,它必须是以下两种形式之一:
p8p^8p8,其中 ppp 是一个质数。
p2⋅q2p^2 \cdot q^2p2⋅q2,其中 ppp 和 qqq 是不同的质数。
为什么是这两种形式,原因如下。
一个数的约数个数可以通过其质因数分解来确定。假设有一个正整数 nnn,它的质因数分解为:
n=p1e1⋅p2e2⋅…⋅pkekn = p_1^{e_1} \cdot p_2^{e_2} \cdot \ldots \cdot p_k^{e_k}
n=p1e1⋅p2e2⋅…⋅pkek
其中 p1,p2,…,pkp_1, p_2, \ldots, p_kp1,p2,…,pk 是不同的质数,而 e1,e2,…,eke_1, e_2, \ldots, e_ke1,e2,…,ek 是这些质数在 nnn 的质因数分解中的指数。
根据约数个数定理,nnn 的约数个数 d(n)d(n)d(n) 可以通过下面的公式计算得出:
d(n)=(e1+1)(e2+1)…(ek+1)d(n) = (e_1 + 1)(e_2 + 1)\dots(e_k + 1 ...
洛谷题解
未读
思路:
多源 bfs。
把每一个加湿器看做一个起点,求他们走 DDD 步最多可以走到几个格子。
对每一个加湿器的坐标进行 bfs。
bfs 模版里的标记数组要修改成 int 类型,并且标记的是到达这个位置的最小步数。
如果到达这个点时的步数小于标记的步数,才可以继续往下搜,因为只有还可以走的步数大于原本可以走的步数,才有可能走到更多的点,否则走到的点只会是走过的点。
其余的就是模版了。
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int#define ull unsigned long longchar s[1100][1100];int H,W,D;int bj[1100][1100];struct node{ int x,y,step;};void bfs(int x,int y){ queue<node>dl; dl.push({x,y,0}); while(dl.empty()==0)& ...
思路:
先考虑用队列和结构体进行模拟。
把输入的那个数的 ididid 和值一起放进队列,然后照着题目模拟就可以得出代码。
struct node{ int id; int num;};queue<node>dl,d;int main(){ cin>>n; while(n--){ cin>>op; if(op==1){ int x;cin>>x; dl.push({++i,x}); } else if(op==2){ cout<<dl.front().id<<" "; dl.pop(); } else if(op==3){ queue<node>d; int id=0; int maxx=-5; int cnt=0; while(dl.empty()==0){ node tamp=dl.front(); ...
题目传送门。
思路:
题目要求求出所有的方案,考虑 dfs 找出每个方案。
利用深度优先搜索找出所有方案,遇到可能方案时存下来,并使我们用来记录一共有几个可能结果的变量加一,最后输出有几种可能和所有可能的方案。
注意 dfs 里要按从小到大的顺序搜。
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int#define ull unsigned long longint n,m;int ans[15],cnt;vector<int>anss;void print(){ cnt++; for(int i=1;i<=n;i++){ anss.push_back(ans[i]); }// anss+="\n"; return ;}void dfs(int now,int v){// cout<<v if(now==n+1){ print();return ...
本文章操作均在 windows 操作系统下进行。
friend-circle-lite 朋友圈作者教程。
效果见本博客朋友圈。
搭建
1. fork 项目
进入此链接并 fork 本项目,fork 默认的就可以了,不用修改。
2. 修改 conf.yaml
在仓库里打开 conf.yaml 文件,点击 edit this file(像笔的图标),然后把
spider_settings: enable: true json_url: "https://blog.liushen.fun/friend.json" article_count: 5 merge_result: enable: false merge_json_url: "https://fc.liushen.fun"
里的 json_url 后的双引号里的链接改成你朋友圈的 json 的链接(下面会讲怎么获取)。
3. 设置 action
在项目里点击 Actions,然后点击绿色的按钮,之后进入 Friend Circle Lite,点 Enable wo ...
思路:
为了计算第 iii 个玩家的获胜概率,我们需要考虑所有可能的情况,即所有玩家轮流投掷直到某人获胜。给定 nnn 个玩家,每个玩家投掷成功的概率为 ppp,失败的概率为 1−p1-p1−p。
第 iii 个玩家的获胜方式可以分为以下几种情况:
在第一轮中,第 iii 个玩家直接获胜,这发生在前 i−1i-1i−1 个玩家都失败了之后,所以概率为 (1−p)i−1⋅p(1-p)^{i-1} \cdot p(1−p)i−1⋅p。
第 iii 个玩家在第二轮获胜,这意味着所有 nnn 个玩家在第一轮都失败了,然后前 i−1i-1i−1 个玩家在第二轮也失败了,第 iii 个玩家在第二轮获胜,所以概率为 (1−p)n⋅(1−p)i−1⋅p=(1−p)n+i−1⋅p(1-p)^{n} \cdot (1-p)^{i-1} \cdot p = (1-p)^{n+i-1} \cdot p(1−p)n⋅(1−p)i−1⋅p=(1−p)n+i−1⋅p。
同理,第i个玩家在第三轮获胜的概率为 (1−p)2n+i−1⋅p(1-p)^{2n+i-1} \cdot p(1−p)2n+i−1⋅p。
这个模 ...
题目传送门。
题意:
完整题目:
UVA10761 Broken Keyboard
题目描述
某些键盘上的字母键坏了,但是所有非字母键都功能正常。尽管如此,我们还是需要输入一段文本,并希望知道可以完整输入多少行文本。此外,在我们仍然能够输出相同的文本行的基础上,我们还想知道哪些其他的字母键也可以坏掉。
输入格式
程序应该从名为 keyboard.dat 的文件中读取输入。这个题目有但是不需要。 输入文件包含多个案例。每个案例的第一行列出了一系列坏掉的字母键。接下来的几行是希望输入的文本。此文本以以下行结束:
END
该行也应被处理。输入的任何一行都不会超过80个字符。当输入的第一个单词为 finish 时,表示输入终止,此案例不应被处理。
输出格式
输出应格式化为一个表格,参见样例输出。表头占据4行,如下所示,另有一行用于标记字符位置;这行不是表头的一部分。
12345678901234567890123456789012345678901234567890123456789+----------+----------------+--------------------- ...
洛谷题解
未读
思路:
lenlenlen 为 sss 的长度。
通过 KMP 算法,找到最长公共前后缀长度,对于字符串 sss,它的最长公共前后缀长度是 KMP 算法使用数组 nexnexnex 的最后一个值 nexlen−1nex_{len-1}nexlen−1。
之后构造字符串 ttt。
如果最长公共前后缀长度为 000,那么 ttt 只能是两个 sss 加在一起,代码实现为 t=s+s。
否则 ttt 就是 sss 加上 sss 中下标为最长公共前后缀长度的字符及其之后的所有字符,代码实现为 t=s+s.substr(nex[len-1])。
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int#define ull unsigned long longstring s;int nex[1000005];int main(){ cin>>s; int len=s.size(); for(int i=1,j=0;i<len;i++) ...
洛谷题解
未读
思路:
数学题。
当 xxx 等于 yyy 时,从 xxx 到 yyy 最少只要 000 步。
当 xxx 不等于 yyy 时,从 xxx 到 yyy 最少需要的步数要分两种情况考虑:
直接过去,步数为 lcm(x,y)\operatorname{lcm}(x,y)lcm(x,y)。
通过最大公因数过去,步数为 lcm(x,gcd(x,y))+lcm(y,gcd(x,y))\operatorname{lcm}(x,\gcd(x,y))+\operatorname{lcm}(y,\gcd(x,y))lcm(x,gcd(x,y))+lcm(y,gcd(x,y))。
答案为两种情况里的最小值。
考虑到 long long 范围不够,所以用 __int128。
代码:
#include<bits/stdc++.h>using namespace std;#define itn int#define ull unsigned long long__int128 x,y;__int128 read(){ bool f=1;__int128 x=0;c ...
放的代码是赛时代码。
CSP-J:
总分:280。
T1:AC,map。
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int// unordered// priority// operatorint n;unordered_map<string,int>mp;string xy[]={ "DA","CA","HA","SA", "D2","C2","H2","S2", "D3","C3","H3","S3", "D4","C4","H4","S4", "D5","C5","H5&q ...