题目描述 给你一个年份和月份,求该月有多少天 输入 一个年份(正整数),一个月份(1-12),中间有一个空格隔开 输出 该月的天数,单独占一行。 样例输入 Copy 2012 2 样例输出 Copy 29 #include<stdio.h> main() { int a,b,c; scanf("%d %d",&a,&b); switch(b)
例41 快速幂运算 题目描述 输入三个整数 b,p,k(0≤b,p,k<231),求 b^p mod k 输入格式 一行三个整数 b,p,k 输出格式 输出 b^p mod k=s (s 为运算结果) 输入样例 2 10 9 输出样例 2^10 mod 9=7 (1)编程思路。 在实际应用中,我们经常会用到幂运算,例如,an为a的n次
最近做了一个关于幂取模的题目,起初本来是想用pow函数,但后来发现使用pow函数会出现精度缺失的情况,然后就尝试寻找其他的方法。 第一种:直接法 int mypow(int a,int b,int c){ a=a%c; int ans=1; while(b--){ ans=(ans*a)%c; } } 第二种:递归法 int mypow(int a,int b,int c){
a23=a16 * a^4 * a^2 * a^1 res=a^1 res*=a^2 res*=a^4 res*=a^16 ... #include<bits/stdc++.h> #define ll long long using namespace std; int main(){ ll a,b,p,res=1; cin>>a>>b>>p; while(b){ if(b&1)res=res*a%p;//当
#include"stdio.h" int main() { int i,a,sum=0; printf(“输入一个整数:\n”); scanf("%d",&a); for(i=0;i<a;i++) { if(a%i0) sum+=i; } if(asum) printf(“为完数”); else printf(“不为完数”); return 0; }
题目: 2-35进制的两个数进行相减,大于10进制的用a-z(小写字母)补齐 输入: 2 11 1 解释: 2 为2进制, 11 为被减数 1 为减数 输出: 0 10 解释: ①0为正数,1为负数 ②11-1 =10 public static void main(String[] args) { Scanner input = new Scanner(System.in);
级数 题目描述 请计算 ∑i=ab1i ,结果请使用分数表示,并保证分子与分母互质。 输入 第一行是一个整数T(1≤T≤1100),表示样例的个数。 每个样例占一行,为两个整数a,b(2≤a≤b≤100,b−a≤10) 输出 每行输出一个样例的结果,格式为“分子/分母” 样例输入 3 2 2 2 3 3 6 样例输出 1/2
什么是赋值运算符在赋值符'='号前面加上其他运算符,就构成了复合运算符 如: a+=b; /*等同于 a=a+b*/ a-=b; /*等同于 a=a-b*/ a*=b; /*等同于 a=a*b*/ a/=b; /*等同于 a=a/b*/ a%=b; /*等同于 a=a%b*/ 接下来看示例: #include <stdio.h> void main() { printf("定义两个变量a=10 b
计算 3**15421过程如下: 3**15421=(3**1542)**10+3**1 // 3**1542=(3**154)**10+3**2 // 3**154= (3**15)**10+3*4 3**15=(3**1)**10+3**5这样通过有限的操作次数就能完成计算 不需要计算一万多次 a*b%c 为 a%c * b%c 代码如下 int MOD
一.贝祖定理:若a,b是整数,存在一对 x , y 使得 ax+by = gcd(a,b)。gcd(a,b)表示a和b的最大公约数。 二.欧几里得有个十分有用的定理欧几里得算法(辗转相除法): gcd(a, b) = gcd(b, a%b) 三.求最大公约数: 若继续递归向下传递则有 gcd(a, b) = gcd(b, a%b) = gcd(a%b,
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { long n,m; scanf("%ld",&n); long a,k,i,j,b; for(a=1;a<=n;a++) { for(m=a,k=1;(m/=10)>0;k*=10); i=k*10;m=0;b=10;
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
#include<iostream> using namespace std; int main(){ int n,a,b; scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); if(a==b){ if(a%2==0){ printf("%d\n",a*
第一期第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&&
一、÷(除法) var str = 10/4 = 2 不等于2.5 如果想等于2.5 则需要 有一个为浮点数 int float32 都是一样的 二、%(取模) 公式:a%b = a -(a/b)*b 细节
T1 给定有n个数的数列,将其随机打乱,求得到升序的期望值,并对\(10^9+7\)取模 今天又看到了一个新的函数 if(is_sorted(a+1,a+n+1)) 题解: 总情况为\(n!\),当序列中没有重复时得到升序序列的情况为1; 当有两个重复时,情况为2; 三个重复,则为6; . . . 那么就用一个数组记录序列中重复出现的数
求最大公约数的伪代码 参考资料:欧几里得算法(求解最大公约数的优质方法)以及原理拓展 算法说明:欧几里得算法(Eculidean Algorithm)指明:a,b最大公约数(Greatest Common Divisor),就等于b,a%b的最大公约数,公式如下 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b) = gcd(b,a % b) gc
编写程序,输入一个整数,判断它能否被3,5,7整除,并输出下列信息之一: 能同时被3,5,7整除;能被x和y两个数整除;能被x整除;不能被3,5,7任一个数整除。 #include <stdio.h> void main() { int a; printf("请输入一个整数:"); scanf("%d",&a); if(a%3==0 && a%5==0 && a%7==0) printf("
今天又到了分享学习经历的时候了,不过今天以及后面4天都只会分享我的复习经历。毕竟温顾而知新,可以为师矣。OK,废话不多说上题目。 怎么样是不是很熟悉。答案还是没有变。 如下: #include <stdio.h> int main( ) { int a,b,sum,c,j,w; scanf(
求最大公约数的伪代码 欧几里得算法 参考资料:求最大公约数之:欧几里得算法求两个数的最大公约数 其中流程图如下: 输入两个数字a和b 判断a<b是否为真 如果结果为真,则交换a和b的值,进入下一个判断 如果结果为假,则进入下一判断 判断b=0是否为真 如果结果为真,则a就是a,b的最大公约
#include<stdio.h> int main() { printf("1不是素数\n"); int a,b; for(a=2;a<=100;a++) { int c=0; for(b=2;b<a;b++) { if(a%b==0) { c=1;
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
1.求俩个数的最大公约数(使用递归思想)似乎运算时间会少一点 #include <stdio.h> int f(int a,int b) { if(a%b==0) return b; return f(b,a%b); } int main() { int n,i; scanf("%d",&n); for(i=0;i<n;i++) {
描述 输入一个整数,判断它能否被3,5,7整除,并输出以下信息: 1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格); 2、能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔) 3、能被其中一个数整除(输出这个除数) 4、不能被任何数整除
a x + b y = g c