首页 > TAG信息列表 > B
P1008 [NOIP1998 普及组] 三连击
题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将 1, 2, \ldots , 91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1 : 2 : 31:2:3 的比例,试求出所有满足条件的 3关于组合数学基础
今天学了一些基础数论,简单记录一下: 首先是前备基础: 1.小学奥数之排列组合 排列: 组合: 组合重要公式: 这些显而易见的东西也不过多赘述,本质就是杨辉三角与组合还有完全多项式系数之间的关系 2.基础数论算法: 假设x≡y (%p)x+a ≡ y+a (% p)x-a ≡ y-a第一篇博客——洛谷P1008 [NOIP1998 普及组] 三连击
题目链接:https://www.luogu.com.cn/problem/P1008 题目大意: 题目描述 将 1,2,…,91, 2, \ldots , 91,2,…,9 共 999 个数分成 333 组,分别组成 333 个三位数,且使这 333 个三位数构成 1:2:31 : 2 : 31:2:3 的比例,试求出所有满足条件的 333 个三位数。 输入格式 无 输出格快速幂 A^B Mod C
C语言——A^B Mod C 在这里插入代码片 ```#include<stdio.h> long long pow(long long a,long long b,long long c){ long long s=1; while(b){ if(b%2) s*=a; a=(a*a)%c; b=b/2; s=s%c; } return s; } int main() { long long a,b,c; scanf("%lld %lld %ll【C学习笔记】day2-5 求两个数的最大公约数
#include <stdio.h> int main() { int a, b; int min; scanf_s("%d %d", &a, &b); if (a > b) min = b; else min = a; for (int i = min; i >= 0; i--) { if (a%i == 0 && b%i【Luogu3414】SAC#1 - 组合数
problem solution codes #include<iostream> #define mod 6662333 using namespace std; typedef long long LL; LL dfs(LL a, LL b, LL p){ if(b==1)return a%p; LL t = dfs(a,b>>1,p)%p; if(b%2==0)return t*t%p; else return t*t*a%p; } int“21天好习惯”第一期—4
第一期第4天 今天学会如何使用逻辑运算符#include<stdio.h> int main(){ int a,b; scanf("%d,%d",&a,&b); if(a%2==0&&b%2==0&&a!=0&&b!=0) { printf("%d+%d=%d\n",a,b,a+b); } else if(a%2!=0&&b%2!=0&&a!=0&&“21天好习惯” 第一期-12
加油 11.02 多分支表达-数据奇偶判断 (25 分) 键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和,如果A和B都是奇数则输出两个数的差,如果A是奇数B是偶数则输出两数积,如果A是偶数B是奇数输出A/B结果 输入格式: 输入两个非零整数,逗号分隔 输出格式: 如果A和B都是偶数则输“21天好习惯”第一期-19
我今天解决了 键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和,如果A和B都是奇数则输出两个数的差,如果A是奇数B是偶数则输出两数积,如果A是偶数B是奇数输出A/B结果 输入格式: 输入两个非零整数,逗号分隔 输出格式: 如果A和B都是偶数则输出:A+B=两个数的和; 如果A和B都是奇“21天好习惯“第一期——12
今天又到了分享学习经历的时候了,不过今天以及后面4天都只会分享我的复习经历。毕竟温顾而知新,可以为师矣。OK,废话不多说上题目。 怎么样是不是很熟悉。答案还是没有变。 如下: #include <stdio.h> int main( ) { int a,b,sum,c,j,w; scanf(SQL语句中的特殊字符 单引号' 方括号[] 和Like中的特殊字符:下划线 _ 、百分号%、方括号[]、尖号^
SQL语句中的特殊字符 单引号' 方括号[] 和Like中的特殊字符:下划线 _ 、百分号%、方括号[]、尖号^ 1、SQL语句中的特殊字符 单引号' 方括号[] Select * from [Test Order] --中间有空格,用[] 将表名包裹起来,告诉语法分析器,[]号内的是一个完整的名称 --Field1字段的值为 Te's2021-10-26
2021.10.5 昨天因为事情比较多忘记发了 今天补发 #include <stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); if(a%20,b%20) { printf("%d+%d=%d",a,b,a+b); } else if(a%21,b%21) { printf("%d-%d=%d",a,b,a-b); } else if(a%20,b%21) { pri“21天好习惯“第一期-4
有一位优秀教师曾经对我们说,用C语言来解决数学题才是厉害的。所以,我最近就研究了关于使用C语言解决一些数学题的知识,发现果然生活中出现的一些数学题是可以用C语言来解决的。 #include <stdio.h> #define PI 3.14159265 int main() { double r; printf("请输入圆的半径:");2021-10-25
#include<stdio.h> int main() { int a,b,c,d,e,f,g,x,z; scanf("%d",&x); if((x<0)||x>1000000) return 0; a=x/1000000%10; b=x/100000%10; c=x/10000%10; d=x/1000%10; e=x/100%10; f=x/10%10; g=x%10; if(a%2=【Codeforce Contest 1593 D】
https://codeforces.com/contest/1593/problem/D1 分析 求最大公因子。 #include <bits/stdc++.h> using namespace std; #define LL long long int t,n,a[45],d[45]; int find(int a,int b) { if(a>b)swap(a,b); int r=b%a; while(r) { b=a; a=r; r=b%a; } retCF1527 E2. Erase and Extend (Hard Version)
Problem - E2 - Codeforces 题意: 给出一个长为n的字符串,你可以进行2种操作 1、把串在后面再拼接一次 2、删去串的最后一个元素 要求用这两种操作得出字典序最小的长为m的串 首先答案肯定是由一个前缀拼接多次构成 假设当前的最优前缀是A前缀,长度为LA,现在正在考虑的是B前缀 1leetcode 639 解码方法 2
DP 从前面的推到后面的枚举前面的情况就可以了 注意取余的操作 中间的值有可能超过int表示的范围 需要用long long 暂存,不然的话,需要用循环 每次加到结果上面再取余,确保int值能够存放 导致On的常数比较大 #define MOD 1000000007 int numDecodings(char * s){ int len=st快速幂算法,取模
1/4对998244353取模后为748683265 (1/a)%p=a**(p-2)%p def ad(a, b, c): d = 1 while(b): if b%2 == 1: d = (d*a)%c #(a*b)%c=((a%c)*(b%c))%c a = (a*a)%c b = b//2 return d p = 998244353 print(ad(4, p-2, p)) #等快速幂算法
我们首先来看一个问题: 给定三个正整数a,b,m(a<10^9, b<10^18, 1<m<10^9),求 a^b%m。 如果用循环来写,不断乘上a再取模,时间复杂度为O(b)。很容易超时。 所以我们考虑快速幂算法。它基于二分的思想,也被称为二分幂。 递归写法 1.如果b是奇数,那么有:\(a^b = a*a^{b-1}\) 2.如果b是偶数,那求亲密数
#include <stdio.h> #include <math.h>#define NUM 500int main(void){ int a,b,c,i,j; for(a=1;a<=NUM;a++) { for(b=0,i=1;i<=a/2+1;i++) { if(a%i==0) { b+=i; } } for(c=0,j=1;j<=b/2+1;j++) { if(b%j==0) { c+=j; } } if2021-05-08
Least Common Multiple int gcd(int a,int b){ int t; while(a!=0){ t=b%a; b=a; a=t; } return b; } int main(){ int n,s,m,i,a; scanf("%d",&n); while(n!=0){ s欧几里得定理及其扩展应用
先来介绍一下欧几里得的应用 可用于求两个数的最大公约数 核心等式gcd(a,b)=gcd(b%a,a) 前提是a不等于0 证明: 证明两个正数大小相等可以转换为证明这两个整数可以相互整除 先设d=gcd(a,b) 现在证明d | gcd(b%a,a) b%a=b-[b/a]*a,由于b%a是a与b的线性组合,故有d |剑指 Offer 10- I. 斐波那契数列
斐波那契数列 思路题解 思路 逐渐领悟到对于工程问题,在执行函数中的所有函数都需要初始化,否则必然会出问题,而且要非常明确的考虑边界条件。 这个题有很多种写法,递归,递推,矩阵连乘等等,我用的是最节省空间的滚动数组,设置三个数字a,b,c=a+b,在每次循环中使a=b,b=c,c=a+b,这样HD1097
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1097 #include <bits/stdc++.h>//万能开头; using namespace std; int main() { int a,b,c; while(scanf("%d %d",&a,&b)!=EOF) { while(a>=10) a%=10; b=b%4; if(b==0) b=4; c=pow(a,b)蓝桥杯回文数
蓝桥杯回文数 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数