Jun's blog

记录学习与成长

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include<string.h>

int main(void){
// 基础填充字符串(LANQIAO,长度7)
char str[8]="LANQIAO";
int h,w; // h:行数 w:列数
scanf("%d %d",&h,&w);

// 二维数组存储生成的图形
char graph[h+1][w+1];

// 填充图形:逐行逐列按规则赋值
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
// 核心公式:(行号+列号)%7 实现LANQIAO循环填充
graph[i][j]=str[(i+j)%7];
}
}

// 统计图形中'A'的数量
int count=0;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
if(graph[i][j]=='A') count++;
}
}

printf("%d",count);
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
int main(void){
int n;
scanf("%d",&n);
int left=0,right=n-1,top=0,bottom=n-1;
int a[n][n];
int i=1;
while(i<=n*n){
for(int j=left;j<=right;j++){
a[top][j]=i++;
}
top++;
for(int j=top;j<=bottom;j++){
a[j][right]=i++;
}
right--;
for(int j=right;j>=left;j--){
a[bottom][j]=i++;
}
bottom--;
for(int j=bottom;j>=top;j--){
a[j][left]=i++;
}
left++;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(j>0) printf(" ");
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}

扩展欧几里得算法求解同余方程

1
2
求关于x的同余方程 
ax≡1(modb) 的最小正整数解。

原理:

题目的意思即:(ax-1) mod b = 0 => ax-1=by,y为整数 => ax-by=1存在整数解

我们小学二年级就学过有个东西叫做裴蜀定理,这个定理说:若a,b为整数,gcd(a,b)为a,b的最大公约数,那么ax+by一定是gcd(a,b)的整数倍。简单来说,ax+by=m(a,b,mZ) 存在整数解 <=> gcd(a,b)|m,即m能被gcd(a,b)整除

并且有解时会有无数个解,怎么求呢?

这里我们用m=gcd(a,b)时来举例子:设d=gcd(a,b),ax+by=d

由辗转相除法我们知道:d=gcd(a,b)=gcd(b,a%b),d也是b和a%b的最大公约数,因此也满足:bx+(a%b)y=d,设q=int(a/b),则a%b=a-qb,那么bx+(a-qb)y=d ==> ay+b(x-qy)

我们得到了迭代公式,若对方程bx+(a%b)y=d可求得一个整数解(x2,y2),a×y2+b(x2-q×y2),则(y2,x2-q×y2)方程ax+by=1的一个解,

x1=y2,y1=x2-a/b*y2

其中a/b是取int

这样的话我们就可以一直辗转相除(具体见辗转相除的博客)直到b=0时,a恰好为gcd(a,d),那么这个时候ax + 0y = d,所以此时x=1,不妨取y=0作为一组解,即一个特解x=1,y=0。然后进而用递归求出原始的ax+by=d的解(a,b前后不一样的喔),但是这个时候得到的也只是其中一个特解x0,y0,通解为x′=x0+K∗b/d;y′=y−K∗b/d(K为任意整数),至于证明这里就不过多赘述了

现在还剩一个问题,怎么找到最小正整数解x,

1
( x % b + b ) % b 

欧克,所有问题解决,回到代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;
y=0;
return a;
}
int d=exgcd(b,a%b,x,y);
int t=x;
x=y,y=t-a/b*y;
return d;
}
int main(){
int a, b, x, y;
cin >> a >> b;
exgcd(a,b,x,y);
x=(x%b+b)%b;
cout << x << '\n';
return 0;
}

  • 在博客根目录下创建deploy.bat 批处理文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
echo 当前目录:%cd% # 显示当前路径,方便排查
cd /d D:\Toolsoftwares\blog # 切换到博客根目录
echo 切换后目录:%cd% # 确认是否切换成功

hexo clean & hexo g & hexo d

echo ======================
echo 部署命令执行完成!
echo 若有报错,请往上查看终端输出~
echo ======================
pause

上传新内容

1.进入博客根目录

cd /d/Toolsoftwares/blog

2.新建 Hexo 文章
1
hexo new "文章标题"  # 简写:hexo n "文章标题"
3.编辑文章内容(Markdown 格式)
  • 找到 source/_posts/文章标题.md 文件,用编辑器打开;

  • 开头会有默认的「Front-matter」配置(必须保留,控制文章属性),示例:

    1
    2
    3
    4
    5
    6
    ---
    title: 文章标题 # 文章标题(可修改)
    date: 2025-11-26 18:30:00 # 发布时间(自动生成,可修改)
    categories: 随笔 # 文章分类(可自定义,比如「技术」「生活」)
    tags: [学习记录, Hexo] # 文章标签(数组格式,可多个)
    ---
  • --- 下方写正文,用 Markdown 语法编辑(支持标题、图片、链接、代码块等),示例:

1
2
3
4
5
6
7
8
9
10
# 一级标题
这是我的新文章正文,支持 **加粗***斜体*、[链接](https://hexo.io)。

## 二级标题
1. 有序列表1
2. 有序列表2

```bash
# 代码块示例
hexo clean && hexo g -d

当然,如果你用的是Trpora,具体如何编辑的指令统统都不用记

4. 本地预览(确认文章显示正常)
1
2
# 生成静态文件 + 启动本地服务器(合并命令)
hexo clean && hexo g && hexo s
  • 终端提示 INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop. 后,打开浏览器访问 http://localhost:4000
  • 确认新文章能正常显示(标题、内容、分类 / 标签无误),再进行下一步。

5. 部署上线(上传到 GitHub Pages)

本地预览无问题后,执行部署命令,将新文章同步到线上博客:

1
2
# 先停止本地服务器(按 Ctrl+C),再执行部署
hexo clean && hexo g -d # 清理缓存 → 生成最新静态文件 → 部署
  • 若输出 INFO Deploy done: git,说明部署成功;
  • 等待 5-10 分钟(GitHub Pages 缓存延迟),打开 https://junbobd.github.io 即可看到新文章。

编辑已上传内容

  • 直接编辑 source/_posts/ 对应的 .md 文件;
  • 重新执行 hexo clean && hexo g -d 部署,会自动覆盖线上旧版本。

删除文章

  1. 删源文件:进入你博客根目录下的 source/_posts 文件夹,找到要删除文章对应的 Markdown(.md)文件,直接手动删除,也可在终端用命令删除,比如删除test.md就输rm source/_posts/test.md
  2. 清理缓存:回到博客根目录,执行你之前用过的hexo clean命令,清除之前生成的旧缓存和public文件夹内容,避免残留旧文件影响效果。
  3. 重新生成:输入hexo g(即hexo generate),生成不含已删除文章的新静态页面文件。
  4. 重新部署:最后执行hexo d(即hexo deploy),把更新后的内容部署到 GitHub 上。等待 2 - 5 分钟后,线上博客的对应文章就会被删除了。

总结

  • 发布新文章所需命令:
1
2
3
4
hexo new "文章标题"
//编辑完后
hexo clean && hexo g && hexo s//本地预览检查
hexo clean && hexo g -d//部署上线
  • 编辑已发布的文章,修改完后,重新部署,即hexo clean && hexo g -d
  • 删除文章,删除后重新部署,即hexo clean && hexo g -d

方法:辗转相除法

原理:矩形不断切割

一、最大数公约数

int a,b,t;

while(b!=0){

t =a%b;

a=b;

b=t;

}

int gcd(a,b)=b;//结果为b

二、最小公倍数

int lcm=a*b/gcd(a,b);

bolg的搭建

1.安装 node.js 和 Hexo

2.初始化博客项目

3.部署到 GitHub Pages

4.哈哈哈

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

0%