洛谷P1602_bfs+同餘定理
求每位由0,1,2,...,K-1組成的能被M整除的最小的數
***********************************************************
由同餘定理知,+和*運算,在中途取餘對結果沒有影響,
所以,邊計算邊取餘,直到一個數能被M整除
因此,數的範圍都是<M的,再用一個vector佇列同步儲存算得的值
***********************************************************
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int maxn = 1010;
bool vis[maxn];
int K, M;
void bfs()
{
queue <int> q1;//對M取模後的過程值
queue <vector<int> > q2;//維護q1的原本值
vector <int> t;//輔助容器
int i, j, u, v;
for(i = 1; i < K; ++i)
{
if(i % M == 0)
{
printf("%d\n", i);
return;
}
q1.push(i%M);
vis[i%M] = 1;
t.push_back(i);
q2.push(t);
t.pop_back();
}
while(!q1.empty())
{
u = q1.front();
q1.pop();
t = q2.front();
q2.pop();
for(i = 0; i < K; ++i)
{
v = (u*10+i) % M;
t.push_back(i);
if(!v)
{
for(j = 0; j < t.size(); ++j) printf("%d", t[j]);
printf("\n");
return;
}
if(!vis[v])
{
vis[v] = 1;
q1.push(v);
q2.push(t);
}
t.pop_back();
}
}
}
int main()
{
scanf("%d %d", &K, &M);
bfs();
return 0;
}
相關文章
- 洛谷P2613 【模板】有理數取餘
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- 洛谷
- 角谷定理-XDOJ
- P1082 [NOIP2012 提高組] 同餘方程 尤拉定理
- 中國剩餘定理
- Lucas定理 & Catalan Number & 中國剩餘定理(CRT)
- 洛谷團隊
- 同餘
- [待更新]中國剩餘定理
- 中國剩餘定理(構造)
- RSA遇上中國剩餘定理
- 洛谷死亡時間
- 洛谷P1786
- 洛谷 - P5369
- 洛谷P6786
- 洛谷P10725
- 洛谷P10693
- 洛谷 - P6190
- 洛谷——玩具謎題
- 英雄聯盟(洛谷)
- 擴充套件中國剩餘定理套件
- 洛谷網校學習
- 昨天放洛谷的圖
- 將洛谷私信接入WindowsWindows
- 洛谷 P10254 口吃
- 洛谷傻逼之處
- 洛谷八皇后問題
- 洛谷 P3958乳酪
- 【洛谷】【分支】月份天數
- 同構——費馬小定理
- 中國剩餘定理(個人筆記)筆記
- 文字相似度計算之餘弦定理
- 洛谷 P11323 Happy CardAPP
- 洛谷P1784.數獨
- 洛谷題單指南-字串-Test字串
- 洛谷P3853總結
- 洛谷-P9574 題解