#include<cstdio>#include<algorithm>#include<map>usingnamespace std;intmain(){
int n;
map<int,int, greater<int>> func;scanf("%d",&n);int a, b;for(int i =0; i < n; i++){
scanf("%d %d",&a,&b);if(b >=5&& a !=0){
for(int k =0; k <5; k++){
a *= b;
b --;}if(!func.count(b)){
func[b]= a;}else{
func[b]+= a;}}}int size = func.size();if(size ==0){
printf("0 0");return0;}int i =0;for(map<int,int>::iterator it = func.begin(); it != func.end(); it++){
if(it -> second !=0){
printf("%d %d", it -> second, it -> first);if(i != size -1)printf("\n");}
i ++;}}
#include<cstdio>#include<vector>usingnamespace std;intmain(){
int n;
vector<int> v;scanf("%d",&n);if(n ==0){
printf("0");return0;}int mod =0;while(n !=0){
mod = n %(-3);
n =(n - mod)/(-3);if(mod <0){
mod +=3;
n ++;}
v.push_back(mod);// printf("%d %d\n", mod, n);}for(int i = v.size()-1; i >=0; i--){
printf("%d", v[i]);}}
二分法
寻找第一个元素x的下标,没有就返回-1
递增序列,则寻找从左到右,第一个满足x的元素下标
#include<cstdio>#include<algorithm>#definemaxn100000usingnamespace std;int n, x, a[maxn];// 实现的是lower_bound:找出第一个大于等于x的元素下标intbinarySearch(){
int l =0, r = n;// 左闭右闭,搜查范围是[0, n],n为找不到的情况