2014藍橋國賽C組

2021-09-18 02:04:08 字數 4647 閱讀 8328

如果用a b c d這4個字母組成乙個串,有4!=24種,如果把它們排個序,每個串都對應乙個序號:

abcd  0

abdc  1

acbd  2

acdb  3

adbc  4

adcb  5

bacd  6

badc  7

bcad  8

bcda  9

bdac  10

bdca  11

cabd  12

cadb  13

cbad  14

cbda  15

cdab  16

cdba  17

...現在有不多於10個兩兩不同的小寫字母,給出它們組成的串,你能求出該串在所有排列中的序號嗎?

【輸入格式】

一行,乙個串。

【輸出格式】

一行,乙個整數,表示該串在其字母所有排列生成的串中的序號。注意:最小的序號是0。

例如:輸入:

bdca

程式應該輸出:

11再例如:

輸入:cedab

程式應該輸出:

70

#includeusing namespace std;

char s[12],str[12];

int main()

}int query(int pos)

return res;

}int main()

long long ans=1;

long long cnt;

for(int i=1;i<=n;i++)

// cout<100%  大數:

#includeusing namespace std;

#define maxn 9999

#define maxsize 10

#define dlen 4

class bignum

//建構函式

bignum(const int); //將乙個int型別的變數轉化為大數

bignum(const char*); //將乙個字串型別的變數轉化為大數

bignum(const bignum &); //拷貝建構函式

bignum &operator=(const bignum &); //過載賦值運算子,大數之間進行賦值運算

friend istream& operator>>(istream&, bignum&); //過載輸入運算子

friend ostream& operator<<(ostream&, bignum&); //過載輸出運算子

bignum operator+(const bignum &) const; //過載加法運算子,兩個大數之間的相加運算

bignum operator-(const bignum &) const; //過載減法運算子,兩個大數之間的相減運算

bignum operator*(const bignum &) const; //過載乘法運算子,兩個大數之間的相乘運算

bignum operator/(const int &) const; //過載除法運算子,大數對乙個整數進行相除運算

bignum operator^(const int &) const; //大數的n次方運算

int operator%(const int &) const; //大數對乙個int型別的變數進行取模運算

bool operator>(const bignum & t)const; //大數和另乙個大數的大小比較

bool operator>(const int & t)const; //大數和乙個int型別的變數的大小比較

bool operator==(const bignum & t)const; // 大數和大數判斷相等

bool operator==(const int & t)const; // 大數和int型別判斷相等

void print(); //輸出大數

}; bignum::bignum(const int b) //將乙個int型別的變數轉化為大數

a[len++] = d;

}bignum::bignum(const char*s) //將乙個字串型別的變數轉化為大數

}bignum::bignum(const bignum & t) : len(t.len) //拷貝建構函式

bignum & bignum::operator=(const bignum & n) //過載賦值運算子,大數之間進行賦值運算

istream& operator>>(istream & in, bignum & b) //過載輸入運算子

b.a[count]=sum;

count++;

} b.len =count++;

return in; }

ostream& operator<<(ostream& out, bignum& b) //過載輸出運算子

return out;}

bignum bignum::operator+(const bignum & t) const //兩個大數之間的相加運算

} if(t.a[big] != 0)

t.len = big + 1;

else

t.len = big;

return t;

}bignum bignum::operator-(const bignum & t) const //兩個大數之間的相減運算

else

big=t1.len;

for(i = 0 ; i < big ; i++)

else

t1.a[i] -= t2.a[i];

} t1.len = big;

while(t1.a[t1.len - 1] == 0 && t1.len > 1)

if(flag)

t1.a[big-1]=0-t1.a[big-1];

return t1; }

bignum bignum::operator*(const bignum & t) const //兩個大數之間的相乘運算

else

} if(up != 0)

ret.a[i + j] = up;

} ret.len = i + j;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

} bignum bignum::operator/(const int & b) const //大數對乙個整數進行相除運算

ret.len = len;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

}int bignum::operator %(const int & b) const //大數對乙個int型別的變數進行取模運算

return d;

}bignum bignum::operator^(const int & n) const //大數的n次方運算

m-=i;

ret=ret*t;

if(m==1)

ret=ret*(*this);

} return ret;

}bool bignum::operator>(const bignum & t) const //大數和另乙個大數的大小比較

else

return false;

}bool bignum::operator >(const int & t) const //大數和乙個int型別的變數的大小比較

bool bignum::operator==(const bignum & t) const //大數和大數判斷相等

return true;

} bool bignum::operator==(const int & t) const // 大數和int型別的變數判斷相等

void bignum::print() //輸出大數

cout << endl;

}int v1[10010];

int n;

int main()

else nex[++i]=++j;

} else j=nex[j]; }}

int solve(int l,int r,int pos)

sort(s,s+len);

int ans=0;

int l;

for(int i=1;in^2:

// 10000

#includeusing namespace std;

int len;

string s;

int main()

int k=0;n--;

for(int i=0;i<=n;i++) rk[sa[i]]=i;

for(int i=0;iint main()

printf("%d\n",ans);

return 0;

}

2014藍橋杯B組國賽 出棧次序

x星球特別講究秩序,所有道路都是單行線。乙個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。路邊有個死胡同,只能容一輛車通過,是臨時的檢查站,如圖 p1.png 所示。x星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可能仔細檢查。如果車輛進入檢查站和離開的次序...

藍橋盃國賽

過去挺久了,最近也荒廢了挺久,終於有時間來寫寫回憶吧 也要重新開始看演算法開始刷題了,只有努力才會有好運 題解啥的也不說了吧,網上應該挺多,當時填空題除了兩個,大題兩個應該只有部分分,混了個國三,今年題目多也變難了點,自己還是太菜。其實最想說的是第二題和第三題,第二題居然沒想到是揹包。在這個題中猶豫...

隨意組合 2016 藍橋盃國賽 C A組

隨意組合 小明被綁架到x星球的巫師w那裡。其時,w正在玩弄兩組資料 2 3 5 8 和 1 4 6 7 他命令小明從一組資料中分別取數與另一組中的數配對,共配成4對 組中的每個數必被用到 小明的配法是 巫師凝視片刻,突然說這個配法太棒了!因為 每個配對中的數字組成兩位數,求平方和,無論正倒,居然相等...