AUGUTIL_API aug_result aug_readevent(aug_events_t events, struct aug_event* event) { struct link_* next; /* Consume from local stack if not empty. */ next = poplink_(&events->local_); if (!next) { /* Otherwise populate local from shared stack. */ if (loadcasptr_(events, &events->local_) < 0) return -1; if (!events->local_) { /* Wakeup marker has already been written. */ aug_setexcept(aug_tlx, AUG_EXBLOCK); return -1; } /* Reverse the stack so that it effectively becomes a queue. */ reverse_(&events->local_); next = poplink_(&events->local_); } /* Set output event. */ event->type_ = next->type_; if ((event->ob_ = next->ob_)) aug_retain(event->ob_); destroylink_(next); return 0; }
int main(){ int n, i, start, end; scanf("%d", &n); while(n--){ scanf("%s%s", s, t); reverse_(s), reverse_(t); for(i = 0; i < 300 - 1; i++) s[i] += t[i], s[i+1] += s[i] / 10, s[i] %= 10; for(start = 0; s[start] == 0; start++); for(end = 300 - 1; s[end] == 0; end--); for(i = start; i <= end; i++) putchar('0' + s[i]); putchar(10); for(i = 0; i < 300; i++) s[i] = t[i] = 0; } return 0; }
void nextPermutation(vector<int>& nums) { // 1 4 6 5 2 0 if(nums.empty()) return; int i=nums.size()-2; for(;i>=0;i--){ if(nums[i]<nums[i+1]) break; } if(i>=0){ //记住一个案例,一开始从后往前,先找到第一个比后面小的,能够保证后面的数字从后往前递增 //接下来,比较从下一个位置开始,谁第一个小雨他,看实例即可 // 1 3 5 4 2 0 int j=i+1; while(j<nums.size()&&nums[j]>nums[i]){ j++; } j--; swap(nums[i],nums[j]); } reverse_(nums,i+1); }
char *getext__ (const char *fname) { if (fname == NULL) return NULL; int len = strlen (fname); int i; char *ext = NULL; i = 0; if (len == 0) return NULL; ext = (char *) malloc ( sizeof (char) * strlen (fname) ); while ((fname [len] != '.') && (fname [len] != '/') && len != 0) { if ((fname [len] != '\n') && (fname [len] != '\0')) ext[i++] = fname [len--]; else len--; } ext[i] = '\0'; printf("%s\n", ext); reverse_ (ext); return ext; }