发表于 根号分治 算法 Codeforces
一道用根号分治优化的好题。
题目链接:CF1771C
题目大意就是问是否存在两个数,具有相同的质因数。
第一想法是分解质因数,记录质因数出现的次数。但复杂度是N*sqrt(N),算了一下子大约8e8,N再小一点就过了……
于是在dalao的指点下,了解到了一种思想————根号分治。简单来说,就是sqrt(N)前后分开讨论,一部分可以预处理,另一部分可以通过预处理的结果推断出来。
回到这道题上,我们知道,对于一个数x,最多只有一个质因子大于sqrt(x)。我们可以筛出小于sqrt(N)的质数,之后剩下的x必定是一个大于sqrt(x)的质数。
小于sqrt(N)的质数一共就3000多个,为了进一步加快速度,我们可以直接打印出来,然后写在代码里面。
1234freopen("out.data", "w", stdout);printf("{");for (const auto& x : pri)printf("%d, ", x);printf("}");
AC代 ...
有机化学期末考试总结,考前临时抱佛脚能记住几个是几个。
对于CO双键,NaBH4只能还原醛和酮;Zn/HCl,N2H4可以把CO还原为烷烃。为什么-NR在苯环上表现给电子效应?答:首先,氮原子电负性大于碳原子,具有吸电子诱导效应,使电子向氮一极移动;其次,氮原子有孤对电子,和不饱和键相连,就会有如上的三种共振式,有推电子共轭效应。总体上表现给电子效应。(只有N是特殊的?)
-CH3、-OR是邻对位定位基;-COOH、-NO2、-CHF3是间位定位基
解释定位基:书下册P767页直接写就行,不用整理重氮化反应:将-NH2先替换为-NN三键,再替换为-Cl羧基与格式试剂反应:第一次将-OR’换成R’’,第二次将C==O还原为醇,再上一次R’’。
羟醛缩合反应、酯的水解(要会原理)就是a氢下来一个,变成碳负离子,亲核加成之后将碳氧双键变成OH的形式之后再消去。
碳正离子稳定性:苄基远远大于3C。
丙酮和DMSO都是偶极非质子性溶剂
溶剂对SN1和SN2反应的影响碱性越强,进攻能力越强;越弱,离去能力越强。当质子化溶剂时,可极化性越强,进攻能力越强。
羧酸衍 ...
无机化学期末考试总结内容,自用。
气体溶液气体
理想气体状态方程:$pV=nRT,R=8.315$(J或kPa/L)
道尔顿分压定律:$p=\sum_i p_i$
混合气体某组分气压:$p_i=x_ip$
溶液拉乌尔定律:
$p=p_B·x_B$,在一定温度下,难挥发非电解质稀溶液的饱和蒸气压等于纯溶剂的蒸气压乘以溶剂的摩尔分数。
$\Delta p=p_B·x_A$,稀溶液的蒸气压降低值与溶质的摩尔分数成正比。
$\Delta p=p_B·b/55.6$,b为摩尔质量分数稀溶液的依数性:
$\Delta p=K_p·b$
$\Delta T_b=K_b·b$
$\Delta T_f=K_f·b$
胶体
化学热力学初步$\Delta U=Q+W$,$W=-p\Delta V$
焓变的定义:$H=U+pV=U+(\Delta n)RT$反应标准焓变:$$\Delta _rH^{\theta}_m=\sum v_ ...
编写程序实现两个长整数(大于等于0,每个最长80位数字)的乘法运算。从键盘分行读入两个超长整数,要考虑输入高位可能为0的情况(如00083),每行的最后都有回车换行。输出只有一行,是两个长整数的乘法运算结果,从高到低依次输出各位数字,各位数字紧密输出。除非结果为0,否则最高位不能为0。
方法:模拟法思路想一下我们人是怎么计算乘法的:但是我们在做乘法的时候不考虑进位该怎么计算?因此思路为:用数字b的每一位,分别乘上数字a的每一位,因此代码的大体框架应该是这样:
1234567for(int i=0; i<b的长度; i++){ for(int j=0; j<a的长度; j++) { 什么东西 = b[i]*a[j]; }}
数字的输入因为题目说数字最长有80位,而C语言中int的上限为2147483647,就算是开unsigned long long,最大才能存下18446744073709551615这个数字,因此显然不能用一个变量存放数字。
所以我们先把每行的数字当成一个字符串输入,然后用一个数组 ...
源代码FAT32.h123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107#ifndef __FAT32_H#define __FAT32_H#include "stm32f10x.h"#include "sdio_sdcard.h"#define WORD u16#define DWORD u32#define BYTE u8#define END_FAT 0x0fffffff#define BAD_FAT 0xf7ffffff#define INVALID_VALUE 0xffffffff// 我们规定,SD卡为MBR分区且只有一个主分区;扇区大小为512字节,即WORD[DB ...
源代码ESP8266.h12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394#ifndef __ESP8266_H_#define __ESP8266_H_#define __ESP8266_DEBUG // 定义这个宏会将ESP8266回传到单片机的数据传到电脑的串口助手里#include "stm32f10x.h"#include "Delay.h"#include "string.h"#include "stdio.h"#define ESP_EN GPIO_Pin_1 // ESP8266使能引脚的选择#define ESP_EN_Periph GPIOA ...
本文档为《Windows环境下32位汇编语言程序设计》第五章使用资源的部分代码的C语言版,并提供一些必要的补充说明。
5.1 菜单资源122页:Menu.rc资源代码(*.rc)文件分既不是汇编语言也不完全是C语言。资源代码可以直接放在C语言工程文件中编译。但考虑到读者复制方便,本文档会重新抄写一遍原书中的资源代码文件。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <resource.h>#define ICO_MAIN 0x1000 //图标#define IDM_MAIN 0x2000 //菜单#define IDA_MAIN 0x2000 //加速键#define IDM_OPEN 0x4101#define IDM_OPTION 0x4102#define IDM_EXIT 0x ...
本文档是将《Windows环境下32位汇编语言程序设计(典藏版)》第4章汇编代码部分转换成对应的C语言代码,并对C语言代码如何使用WINAPI进行部分补充。
第94页 FirstWindow.c
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677// include 文件定义#include <Windows.h>// 全局变量(对应汇编语言“数据段”的概念)HINSTANCE hInstance;HWND hWinMain;LPCSTR szClassName = "MyClass";LPCSTR szCaptionMain = "My first Window !";LPCSTR szText = "Win32 Assembly, Simple and powerful !&qu ...