UVA 12333
来源:互联网 发布:highlight.js 用法 编辑:程序博客网 时间:2024/06/03 18:10
字典树比较不错的练习,也是指针的比较不错的练习
#include<bits/stdc++.h>using namespace std;typedef struct node{node* next[10];int id,flag;}T;T *root,N[5000000];int ss = 0;void in(int *num,int l,int id){T *now = root;for(int i = 0;i < l;i++){if(!now->next[num[i]])now->next[num[i]] = &N[ss++];if(!now->id&&!now->flag) now->id = id;now = now->next[num[i]];}if(!now->flag){now->flag = 1;now->id = id;}return ;}int query(int *num,int l){T *now = root;for(int i = 0;i < l;i++){if(!now->next[num[i]])return -1;now = now->next[num[i]];}return now->id;}int num[2][50000] = {0};int sum[50] = {0};int main(){memset(N,0,sizeof(N));root = NULL;root = &N[ss++];int s = 0,l = 1,p,q;num[0][0] = 1;num[1][0] = 1;sum[0] = 1;in(sum,1,0);for(int i = 2;i < 100000;i++){p = i%2;q = (i+1)%2;for(int j = s;j < l;j++)num[p][j] = num[p][j]+num[q][j];for(int j = s;j < l;j++){if(num[p][j]>=10){num[p][j]-=10;num[p][j+1]+=1;}}if(num[p][l])l++;if(l - s > 50) s++;int c = 0,r = l-1;while(r>=0&&c<40)sum[c++] = num[p][r--];in(sum,c,i);}int t;while(cin >> t){for(int i = 1;i <= t;i++){string s;cin >> s;for(int j = 0;j < s.length();j++)sum[j] = s[j] - '0';printf("Case #%d: %d\n",i,query(sum,s.length()));}}return 0;}
0 0
- uva 12333
- UVA 12333
- UVA 12333
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 数据结构基础(7) --循环队列的设计与实现
- Java基础-了解HashSet
- myBatis + SpringMVC上传、下载文件
- 《1》策略模式
- 内存管理和使用分配
- UVA 12333
- Coderforce 598A Tricky Sum (数学)
- OPENSSL(一)关于OPENSSL的安装
- FSEventStreamCreate监视文件系统改变通知
- sp_executesql介绍和使用
- 顺序性,一致性,原子性:现代多核体系结构与原子操作·CAS与自旋锁·自旋锁与并发编程的原语·语句原子性和编程逻辑的原子性·行锁与数据库事务原子性·binlog与数据库同
- 创建或删除文件夹
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- Bundle携带List传递