P1082合同式
すなわち、金型は逆元B xを見つける
X一意のでセンスダイB、逆元溶液である最小の整数で
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define R register
#define EN printf("\n")
#define LL long long
inline LL read(){
LL x=0,y=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-') y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=getchar();}
return x*y;
}
int gcd(LL a,LL b,LL& x,LL& y){
if(b){
int d=gcd(b,a%b,y,x);
//d=y*b+x*(a%b)
//d=y*b+x*(a-(a/b)*b)
//d=y*b+x*a-x*(a/b)*b
//d=x*a+(y-(a/b)*x)*b
y-=(a/b)*x;
return d;
}
x=1;y=0;
//赋值后,上一层的d=0*0+a*1=a
return a;
}
int main(){
LL a=read(),b=read(),x,y;
gcd(a,b,x,y);
while(x<0) x+=b;
x%=b;
printf("%lld",x);
return 0;
}
番号P1043についての研究
約1から対数の数およびnはそれぞれ数字である
除数番号として、複数の数に等しく、(割り切れる関係は、倍一方と数について、すなわち、複数又は約数関係の関係とみなすことができる)
ので答えは\(\ sum_ {iは1 = } ^ N \ lfloor \ FRAC {n}は{I} \ rfloor \)
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<stack>
#include<iomanip>
#include<cstring>
#define R register
#define LL long long
inline int read(){
int x=0,y=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') y=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+(c^48);
c=getchar();
}
return x*y;
}
int n;
LL ans;
int main(){
n=read();
for(R int i=1;i<=n;i++) ans+=n/i;
printf("%lld",ans);
return 0;
}
SP2 PRIME1 - 首相ジェネレーター
M、間nは素数求めて
以下のnに等しいより数の決意に起因し、それは合成数である場合ので、素因数少ないが存在しなければならない\(\ SQRT {N}を\
) ので、これらの素数を得るために、その後のMそれらの試験ふるいによって暴力に加えて、n個のセクション
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define R register
#define EN printf("\n")
#define LL long long
inline int read(){
int x=0,y=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-') y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=getchar();}
return x*y;
}
const int sqrtn=35000;
int n,m,prime[10006],notpr[35000];
inline void getprime(){
for(R int i=2;i<=sqrtn;i++){
if(!notpr[i]) prime[++prime[0]]=i;
for(R int j=1;j<=prime[0]&&i*prime[j]<=sqrtn;j++){
notpr[i*prime[j]]=1;
if(!(i%prime[j])) break;
}
}
}
inline void isprime(int num){
if(num==1) return;
int sqrt=std::sqrt(num);
for(R int i=1;i<=prime[0]&&prime[i]<=sqrt;i++)
if(!(num%prime[i])) return;
printf("%d\n",num);
}
int main(){
int t=read();
getprime();
while(t--){
m=read();n=read();
for(R int i=m;i<=n;i++) isprime(i);
EN;
}
return 0;
}