qx的博客

博客

Tags
None

扩域

2024-04-19 19:31:51 By qx

提供一个可以处理无理数的黑科技。

定义新的虚数单位 $i,i=\sqrt{5}.$

对于 $fib$ 数列的通项公式:

$$F_n = \dfrac{1}{\sqrt{5}}\left[\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\left(\dfrac{1-\sqrt{5}}{2}\right)^n\right]$$

将 $\sqrt{5}$ 视作虚数单位。原式可化为:

$$F_n = \dfrac{1}{i}\left[\left(\dfrac{1+i}{2}\right)^n-\left(\dfrac{1-i}{2}\right)^n\right]$$

需要注意: $i^2 = \sqrt{5}^2 = 5.$

$zz'=(a+bi)(c+di)=ac+(ad+bc)i+bdi^2=ac+5bd+(ad+bc)i$

答案是其实数部分。

#include <bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
ll p=1e9+7;
struct cplx{
    ll a,b;
    cplx(ll A=0,ll B=0): a(A), b(B) {}
    cplx operator +(const cplx& tt)const{
        ll u=a+tt.a,v=b+tt.b;
        return cplx(u%p,v%p);
    }
    cplx operator -(const cplx& tt)const{
        ll u=a-tt.a+p,v=b-tt.b+p;
        return cplx(u%p,v%p);
    }
    cplx operator *(const cplx& tt)const{
        ll u=a*tt.a+5*b*tt.b,v=a*tt.b+b*tt.a;
        return cplx(u%p,v%p);
    }
}; 
ll qpow(int a,int b){
    ll base=a,res=1;
    while(b){
        if(b&1)  res=res*base%p;
        base=base*base%p, b>>=1;
    }
    return res;
}
cplx Qpow(cplx a,int b){
    cplx base=a,res=cplx(1,0);
    while(b){
        if(b&1)  res=res*base;
        base=base*base, b>>=1;
    }
    return res;
}
signed main(){
    ll n; cin>>n;
    ll inv2=qpow(2,p-2);
    cplx x=cplx(inv2,inv2);
    cplx y=cplx(inv2,p-inv2);
    cplx xx=Qpow(x,n),yy=Qpow(y,n);
    cplx res=xx-yy;
    ll ans=res.b;
    printf("%lld\n",ans%p);
}

性质 P

2024-03-09 13:08:00 By qx

整数 $n$ ,如果存在整数 $x,y,z$ 满足 $n=x^3 + y^3+ z^3-3xyz$ ,则称 $n$ 具有性质 $P$,在 $1, 5, 2013, 2024$ 中,那些数具有性质 $P$,那些数不具有性质 $P$?请说明理由。

题外话

问题并非我所解决,是由同学解决的。

下面的话语是我的胡言乱语,并不能当作可以获得满分的正确解答。

被同学嘲讽了。不过貌似确实很简单的样子。

在此膜拜一下。顺手写一篇解。

解:

原式

$= (x+y+z)(x^2+y^2+z^2-xy-zx-zy)$

$=(x+y+z)[(x^2+y^2+z^2+2xy+2xz+2yz)-3xy-3xz-3yz]$

$=(x+y+z)[(x+y+z)^2-3(xy-xz-yz)]$

令 $a=x+y+z, b=xy-xz-yz.$

则 $a,b$ 均为整数。

原式 $=a(a^2-3b)$

$\because 2013=3 \times 11 \times 61$

$\therefore a,(a^2+3b) $ 必有一是 $3$ 的倍数。

分类讨论如下:

$\color{white}{ }$

$1 ^{\circ}$ $3|a,$ 则 $3|a^2.$

$\therefore 3|a^2-3b$

而 $3 \nmid (a^2-3b).$ 并不存在满足条件的 $a,b.$

$\color{white}{ }$

$2 ^{\circ}$ $3|a^2,$ 则 $3|a^2-3b, 3|a.$

而 $3 \nmid a.$ 并不存在满足条件的 $a,b.$

$\color{white}{ }$

综上所述,没有满足条件的 $a,b,c$ ,故 $2013$ 不具有性质 $P$。

$1$ 在 $x=1,y=0,z=0$ 时可以使原式成立,故满足性质 $P.$

$5$ 在 $x=1,y=2,z=2$ 时可以使原式成立,故满足性质 $P.$

$2024$ 在 $x=674,y=675,z=675$ 时可以使原式成立,故满足性质 $P.$


另外三数

也许你很想知道另外三个数我是如何得出来的。因为一次一次像证明无解一样做太过冗长。提供一种快速的凑数方法。

先给一张表吧。

1 1 1 -> 0
1 1 2 -> 4
1 2 2 -> 5
2 2 2 -> 0
2 2 3 -> 7
2 3 3 -> 8
3 3 3 -> 0
3 3 4 -> 10
3 4 4 -> 11
4 4 4 -> 0
4 4 5 -> 13
4 5 5 -> 14
5 5 5 -> 0
5 5 6 -> 16
5 6 6 -> 17
6 6 6 -> 0

左边三个数是 $x,y,z$ ,右边是代入原式之后的值。

可以看见,$x=y=z$ 时原式 $=0.$

但是如果有一个数增加 $1$ 会变成如下形式:

$$(x+1)^3 + x^3 + x^3 - 3(x+1)x^2 = 3x+1 $$

两个数增加 $1$ 会变成如下形式:

$$(x+1)^3 + (x+1)^3 + x^3 - 3(x+1)^2x = 3x+2 $$

由于另外三个数都不是 $3$ 的倍数,所以代入这两个式子进去马上就可以求出答案。甩出来就是满足条件的 $x,x+1.$

当然,如果你偏爱真相的话还是可以用正解作答的。在这里只不过是提供一种用谎言骗取考试时间的方法罢了。总之。

$\texttt{solved}$

补充说明

警告: 下面含有大量胡言乱语。但是我相信你一定会看得懂的。

应邱老追问。补充一段分类讨论之中的证明。

在 $a$ 是整数,$a^2$ 的每一个质因子出现个数都是 $a$ 中出现的两倍。这个是幂的运算部分。不多阐述。而 $a^2$ 由于 $a$ 是整数,所以每一个质因子都至少出现了两次。那么在 $a=\sqrt{a^2}$ 中每一个质因子出现次数都会减去一半,但是最后还是多于一次。

这样的话 $a$ 出现的因子和 $a^2$ 是一样的。

所以说 $3|a \iff 3|a^2$ 而 $3b$ 由于 $b$ 是整数也一定会含有一个因子 $3$ 两个数相加后一定也会有一个因子 $3$ 。这是乘法分配律。

如果你需要详细的解释那么我想应该是下面这样的:

设 $a=3k$,则 $a+3b=3k+3b=3(k+b)$ 而 $k,b$ 同样是整数所以加和同样也是整数。乘上 $3$ 之后当然就会有一个因子是 $3$ 。

你可能还很想知道为什么在 $2013$ 的不具性质 $P$ 的证明中, $a,(a^2+3b)$ 为什么必定会有一个含有因子 $3$ 吧?

那么我来告诉你。如果两个数都不含有因子 $3$ 的话,那么随之它们的乘积 $2013$ 也不应该会含有因子 $3.$ 和 $2010$ 一样,这些 $3$ 的倍数无论拆分成哪两个因子想成最终都仍然会有一个含有因子 $3.$

这个可以通过代数基本定理证明吧。但是我累了不想写了。如果不能证明的话那就说明我又开始胡思乱想了。虽然这句话本身就是胡言乱语的一部分。

a+b problem 题解

2024-01-31 23:40:19 By qx

先把一个单项式理解为:

符号,系数的绝对值,字母,指数。

为了方便操作,一口气读完整个字符串(数组),然后去扫描。

因为如果第一项为整数的话没有符号,判一判。

读入系数的绝对值像快读。

如果有 $\texttt{^}$ 这个符号,读一下之后的指数。

由于只有三个字母,所以可以复制粘贴,不用写冗余的 $\texttt{for}$ 循环。代码如下:

inline void change(polygon &a,char *s1){
    int l1=strlen(s1+1);
    for(int i=1;i<=l1;){
        int fl=1,x=0;
        d w1=nw,w2=nw,w3=nw;
        if(s1[i]=='+'||s1[i]=='-') fl=(s1[i]=='+'?1:-1),++i;
        while(isdigit(s1[i])) x=x*10+(s1[i]-'0'),++i;
        if(s1[i]=='x') w1.alpha=s1[i],++i;
        if(s1[i]=='^') ++i;
        while(isdigit(s1[i])) w1.digit=w1.digit*10+(s1[i]-'0'),++i; 
        w1.digit=!w1.digit?w1.alpha=='x':w1.digit;
        if(s1[i]=='y') w2.alpha=s1[i],++i;
        if(s1[i]=='^') ++i;
        while(isdigit(s1[i])) w2.digit=w2.digit*10+(s1[i]-'0'),++i; 
        w2.digit=!w2.digit?w2.alpha=='y':w2.digit;
        if(s1[i]=='z') w3.alpha=s1[i],++i;
        if(s1[i]=='^') ++i;
        while(isdigit(s1[i])) w3.digit=w3.digit*10+(s1[i]-'0'),++i; 
        w3.digit=!w3.digit?w3.alpha=='z':w3.digit;
        if(w1.alpha=='x'||w2.alpha=='y'||w3.alpha=='z') 
            a.x[{w1.digit,w2.digit,w3.digit}]+=fl*x;
        else a.q+=fl*x;
    }
}

然后考虑存储,约定一个结构体 $str$ ,存储三个 $\texttt{int}$ 变量 $x,y,z$ 的质数。然后放进 $\texttt{map}$ 里。映射项的系数。记得按照约定重载小于运算符。

定义一个多项式结构体,由一个 $\texttt{map}$ 以及一个存储多项式常数的整型组成。

struct str{ 
    int x,y,z; 
    bool operator < (const str b) const{
        if(x+y+z!=b.x+b.y+b.z) return x+y+z>b.x+b.y+b.z;
        if(x!=b.x) return x>b.x;
        if(y!=b.y) return y>b.y;
        return z>b.z;
    }
};
struct polygon{    map<str,int> x; int q; }a,b,c;

表示 $A,B,A+B.$

合并同类项就扫一遍两个 $\texttt{map}$ ,然后让新的 $A+B$ 的每一项系数加上原来的系数。

inline void add(void){
    for(auto it:a.x) c.x[{it.first.x,it.first.y,it.first.z}]+=it.second;
    for(auto it:b.x) c.x[{it.first.x,it.first.y,it.first.z}]+=it.second;
    c.q=a.q+b.q;
}

然后按要求输出,这一步多加小心。$\texttt{cbh}$ 可是很毒瘤的。

inline void output(polygon x){
    bool fl=0;
    for(auto it:x.x){
        if(!it.second) continue;
        if(it.second>0&&fl) printf("+");
        if(it.second==-1) printf("-");
        if(it.second!=1&&it.second!=-1) printf("%d",it.second);
        if(it.first.x==1) printf("x");
        if(it.first.x>1) printf("x^%d",it.first.x); 
        if(it.first.y==1) printf("y");
        if(it.first.y>1) printf("y^%d",it.first.y); 
        if(it.first.z==1) printf("z");
        if(it.first.z>1) printf("z^%d",it.first.z); 
        fl=1;
    }
    if(x.q){
        if(x.q>0&&fl) printf("+");
        printf("%d",x.q);
        fl=1;
    }
    if(!fl) printf("0");
    return puts(""),void();
}

加试复习最后一题 讨论爆算

2024-01-13 20:43:03 By qx

是否存在正整数组 $(x,y,z)$,使 $10(xy+yz+zx)=9xyz$ 成立?若存在,求出所有正整数组 $(x,y,z)$;若不存在,请说明理由。

$\because 10(xy+yz+zx)=9xyz$

$\therefore 10xy+10yz+10zx=9xyz$

$\therefore 10 \times \dfrac{1}{x} +10 \times \dfrac{1}{y} +10 \times \dfrac{1}{z} =9$

$\therefore \dfrac{1}{x}+\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{9}{10}$

不妨设 $x \leq y \leq z.$

又 $\because x,y,z>0$

$\therefore x,y,z>1$

则 $\dfrac{1}{x} \geq \dfrac{1}{y} \geq \dfrac{1}{z},$ $\dfrac{1}{x} \geq \dfrac{3}{10}.$

$\therefore x<4.$

分类讨论如下:

$1^\circ \, x=2:$ 代入原式,得

$\dfrac{1}{2}+\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{9}{10}$

则 $\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{2}{5}$

有 $\dfrac{1}{y} \geq \dfrac{1}{5}.$

$\therefore 1 < y \leq 5.$

$\text{I.} \quad y=2:$ 代入上式解得 $z=-10. (舍)$

$\text{II.} \quad y=3:$ 代入上式解得 $z=15. (\sqrt{})$

$\text{III.} \quad y=4:$ 代入上式解得 $z=\dfrac{20}{3}.(舍)$

$\text{IIII.} \quad y=5:$ 代入上式解得 $z=5.(\sqrt{})$

$2^\circ \, x=3:$ 代入原式,得

$\dfrac{1}{3}+\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{9}{10}$

则 $\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{17}{30}$

有 $\dfrac{1}{y} \geq \dfrac{17}{60}$

$\therefore 3 \leq y<4.$ 则 $y=3:$ 代入上式解得 $z=\dfrac{30}{7}. (舍)$

综上所述,$(x,y,z)=(2,2,5),(2,5,2),(5,2,2),(2,3,15),(2,15,3),(3,2,15),(3,15,2),(15,2,3),(15,3,2).$

problems

2024-01-12 22:27:53 By qx

圆内任取三点其构成三角形覆盖圆心的概率

设三个点分别为 $P_1, P_2, P_3.$,圆上有 $x$ 个点 $.$ ($x$ 理论来说是无限大的,但是因为方便表述,所以使用 $x$ 代替之)

任选三个点,共有 $x^3$ 种方案。

概率为 $\dfrac{y}{x^3}$。其中 $y$ 表示圆内任取三点其构成三角形覆盖圆心的方案数。

作射线 $P_1 O$,$P_2 O.$ 两条射线与圆周的交点分别为 $Q_1,Q_2.$

显然,若确定 $P_1,P_2$ ,则满足题意的点 $P_3$ 一定在 $P_1 O$ 与 $\overset{\huge{\frown}}{Q_1 Q_2}$ 上。(原因不想写,让我写也可以试试看)

如图所示。

图炸了关我啥事

选择 $P_3$ 的方案数是 $2 \left[\dfrac{\alpha}{360} \times x \right] .$ 即 $2 \left[ \overset{\huge{\frown}}{Q_1 Q_2} \right].$ 对顶角相等,也即 $2 \left[\overset{\huge{\frown}}{P_1 P_2} \right].$

则总方案数为

$\begin{aligned} y & = 2\left[ \sum _{P_1=1} ^x \sum _{P_2=1} ^{\dfrac{x}{2}} \overset{\huge {\frown}}{P_1 P_2} \right]\\ & = 2\left[ \sum _{i=1} ^x \sum _{j=1} ^{\dfrac{x}{2}} j \right] \\ & = 2\left[ \sum _{i=1} ^x \sum _{j=1} ^{\dfrac{x}{2}} j \right] \\ & = 2\left\{ \sum _{i=1} ^x \left[ \dfrac{\frac{x}{2}(\frac{x}{2}+1)}{2} \right] \right\}\\ & = 2x \left[ \dfrac{\frac{x}{2}(\frac{x}{2}+1)}{2} \right] \end{aligned}$

这里认为 x 是无穷的,则 $y = \dfrac{x^3}{4}.$

代入 $\dfrac{y}{x^3}$ ,得到 概率为 $\dfrac{\dfrac{x^3}{4}}{x^3}=\frac{1}{4}.$

三角函数基础 · 三角函数

2024-01-12 21:41:31 By qx

之前看到彬皓在 $T1$ 的三角函数上面可以获得 $100pts$ 的好成绩,但是我的伪 “三角函数” 的分数只有 $70pts.$ 彬皓和我同为初二学生,他却可以写过去 ,让人佩服。

所以要学习三角函数弥补我在计算几何上面的过失。说实话这东西鸽了很久很久很久了。

发现整个机房就我一个人没了解过向量,将三角函数的时候就我一个人不会。

所以这个东西确实应该补一补。

正好我有一个老掉牙的 $\text{geogebra}.$ 万事俱备只欠东风。

向量及其定义

向量是一种具有方向也具有大小的量。在这里向量的起点为 $A$ ,终点为 $B$ ,那么这个向量可以被表示为 $\overrightarrow{AB}.$ 或者可以用一个小写字母 $a$ 表示,表示为 $\vec{a}$ ,还可以表示为 $\bf{a}$ (这东西为什么不是斜体)

通常认为向量的起点均为原点 $O$,原点的坐标是 $(0,0)$ ,终点是向量平移到起点和原点重合时的原点。

向量的模

可以简单地理解为向量的长度。设这个向量的终点是 $(x,y)$,那么向量的模长是 $\sqrt{ x^2 + y^2 }.$

向量 $a$ 的模记作 $|a|.$

两点 $(x_1,y_1),(x_2,y_2)$ 之间的距离是 $\sqrt{(y_1-x_1)^2+(y_2-x_2)^2}.$ 考虑到向量的起点是原点,所以向量模长可以简单地得到。

后面可以发现向量的模长和绝对值很像,因为有 $|-\vec{a}|=|\vec{a}|.$

相反向量

记 $-\vec{a}$ 为向量 $\vec{a}$ 的相反向量。

也就是向量在从原点 $\cal{O}$ 反向延长这个向量的模之后得到的以原点为起点的向量。(顺口编的)

从上面的定义可以推导到:

设 $\vec{a}=(x,y)$ ,则有 $-\vec{a}=(-x,-y).$ 由定义得,$|-\vec{a}|=|\vec{a}|.$

向量加和

向量 $\vec{a}+\vec{b}.$

几何意义:移动 $\vec{b}$ ,使 $\vec{b}$ 的起点与 $\vec{a}$ 的终点相重合,则从原点为起点,以 $\vec{b}$ 为终点的向量是 $\vec{a}+\vec{b}.$

设 $\vec{a}=(x_1,y_1)$ ,$\vec{b}=(x_2,y_2)$ , 则 $\vec{a}+\vec{b}=(x_1+x_2,y_1+y_2).$

如果这张图炸了那么怪 $\text{geogebra}$

$\cal{PS : }$ 不知道怎么放大字母大小

向量相减:向量 $\bf{b}$ 的加法逆元是 $-\bf{b}$ ,计算 $a+(-\bf{b})$ 就好了。是至于加法逆元的计算见相反向量。

注意向量的模长之和不与两个向量模长成加和的关系,即

有 $\vec{a}+\vec{b}=\vec{c}$ ,不一定有 $|\vec{a}|+|\vec{b}|=|\vec{c}|$ 原因还是参见上面的图。

大概是为数不多的允许向量移动。

向量点积

放缩。$\lambda \vec{a}.$

几何意义:以 $\lambda$ 倍数放缩 $\vec{a}$,得到 $\lambda \vec{a}.$

设 $\vec{a}=(x,y)$ , 有 $\lambda \vec{a}=(\lambda x,\lambda y).$

$1^2 + 2^2 + ... + n^2$

2023-12-25 13:09:35 By qx

第一类数学归纳法。

证明:

$$1^2+2^2+\cdots +n^2 = \dfrac{n(n+1)(2n+1)}{6}$$

一方面,当 $n=1$ 时,$1^2=\dfrac{1\times(2\times 1+1)(1+1)}{6}=1$ 成立。

另一方面,当 $n=k$ 时,

$$1^2+2^2+\cdots +k^2 = \dfrac{k(2k+1)(k+1)}{6}=\dfrac{2k^3+3k^2+k}{6}$$

当 $n=k+1$ 时,

$$1^2 + 2^2 + \cdots +(k+1)^2 = \dfrac{(k+1)(2k+3)(k+2)}{6}={\dfrac{2k^3+9k^2+13k+6}{6}}$$

$$\therefore 1^2+2^2+\cdots +k^2 = \dfrac{2k^3+9k^2+13k+6}{6}-k^2-2k-1$$

$$\therefore 1^2+2^2+\cdots +k^2 = \dfrac{2k^3+3k^2+k}{6}$$

既然证明了命题在 $n=1$ 的条件下成立,也证明了命题在 $n=k$ 的情况下成立时 $n=k+1$ 也成立,则命题成立。


$$1+2+\cdots + n=\dfrac{n(n+1)}{2}$$

一方面,当 $n=1$ 时 $1=\dfrac{1\times 2}{2}$ 成立。

另一方面,当 $n=k$ 成立时 $1+2+\cdots + k = \dfrac{k(k+1)}{2}$

而 $n=k+1$ 时 $1+2+\cdots +(k+1)=\dfrac{(k+1)(k+2)}{2}$

移项可知 $1+2+\cdots + k = \dfrac{k(k+1)}{2}$

既然证明了命题在 $n=1$ 的条件下成立,也证明了命题在 $n=k$ 的情况下成立时 $n=k+1$ 也成立,则命题成立。

共 7 篇博客