TJOI 2018 수학 계산
팥 은 현재 수 x 가 있 는데 초기 값 은 1 이다.팥 은 Q 회 조작 이 있 고 조작 은 두 가지 유형 이 있다. 1m: x = x×m, x mod M 출력;2 pos: x = x / 두 번 째 pos 작업 에 곱 한 수 (두 번 째 pos 작업 은 반드시 유형 1 이 고 모든 유형 1 의 작업 은 한 번 까지 제 거 됩 니 다), x mod M 을 출력 합 니 다.
Input
모두 t 조 입력 이 있 습 니 다.각 그룹의 입력 에 대해 첫 줄 은 두 개의 숫자 Q, M 이다.다음 Q 줄, 모든 행위 조작 유형 op, 조작 번호 또는 곱 한 숫자 m (모든 입력 이 합 법 적 임 을 보장 합 니 다).
Output
모든 작업 에 대해 한 줄 을 출력 합 니 다. 작업 이 실 행 된 x mod M 의 값 을 포함 합 니 다.
Sample Input
1
10 1000000000
1 2
2 1
1 2
1 10
2 3
2 4
1 6
1 7
1 12
2 7
Sample Output
2
1
2
20
10
1
6
42
504
84
Hint
20% 에 대하 여 의 데이터, 1 ≤ Q ≤ 500 대 100% 의 데이터, 1 ≤ Q ≤ 10 ^ 5, t ≤ 5, M ≤ 10 ^ 9
선분 수 는 누 드 문 제 를 나 누 어 치료 하 는데 유일한 구덩이 점 은 내 가 조작 1 만 조작 하 는 것 이 라 고 생각한다.
또 이 문 제 는 롱 롱 롱 을 열지 않 으 면 터 질 수 있다.
#include
using namespace std;
#define Inc(i,L,R) for(register int i=(L);i<=(R);++i)
#define Red(j,R,L) for(register int j=(R);j>=(L);--j)
#define int long long
const int N = 1e5+10;
int n,p;
struct SegMent{
struct Tree{
int L,r,mul;
}t[N<<2];
#define Ls v<<1
#define rs v<<1|1
inline void build(int v,int L,int r){
t[v]=(Tree){L,r,1};
if(L==r)return ;
int Mid=L+r>>1;
build(Ls,L,Mid),build(rs,Mid+1,r);
}
inline void update(int v,int A,int b,int k){
if(t[v].L>b||t[v].r
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.