uva 340 Master-Mind Hints(猜数串)

实现一个经典"猜数字"游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B)。 输入包含多组数据。每组输入第一行为序列长度n,第二行是答案序列,接下来是若干 猜测序列。猜测序列全0时该组数据结束。n=0时输入结束。 样例输入: 4 1 3 5 5 1 1 2 3 4 3 3 5 6 5 5 1 6 1 3 5 1 3 5 5 0 0 0 0 10 1 2 2 2 4 5 6 6 6 9 1 2 3 4 5 6 7 8 9 1 1 1 2 2 3 3 4 4 5 5 1 2 1 3 1 5 1 6 1 9...

SuCicada

UVA 400 - Unix ls (Unixls命令)

例题5-8 Unixls命令(Unix ls,UVa400) 输入正整数n以及n个文件名,按照字典序排序后按列优先的方式左对齐输出。 假设最长文件名有M字符,则最右列有M字符,其他列都是M+2字符。 Sample Input 10 tiny 2short4me very_long_file_name shorter size-1 size2 size3 much_longer_name 12345678.123 mid_size_name 12 Weaser Alfalfa Stimey Buckwheat Porky Joe Darla Cotton Butch Froggy Mrs_Crabapple P.D. 19 Mr._French Jody Buffy Sissy Keith Danny Lori Chris Shirley Marsha Jan Cindy Carol Mike Greg Peter Bobby Alice Ruben Sample Output ------------------------------------------------------------ 12345678.123 size-1 2short4me size2 mid_size_name size3 much_longer_name tiny shorter very_long_file_name ------------------------------------------------------------ Alfalfa Cotton Joe Porky Buckwheat Darla Mrs_Crabapple Stimey Butch Froggy P....

SuCicada

uva 401(回文词)

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=829&problem=342&mosmsg=Submission+received+with+ID+20398535 #include<iostream> #include<string> #include<string.h> using namespace std; string r="A 3 HIL JM O 2TUVWXY501SE Z 8 "; char *m_c="AHIMOTUVWXY018"; char mir_c(char c) { if(c>='A'&&c<='Z') { c=r[c-'A']; } else if(c>='0'&&c<='9')//如果不是else if 那么变成2的S又会变回S c=r[c-'0'+26]; return c; } int main() { string s; while(cin>>s) { int n=s.size(); int m1=2,m2=3,i;//先判断对称,再判断镜像 for(i=0;i<n/2;i++) { if(s[i]!=s[n-i-1]) m1=1; if(mir_c(s[i])!=s[n-i-1]) { //cout<<mir_c(s[i])<<" "<<s[n-i-1]; m2=1; } } if((n%2==1)&&strchr(m_c,s[n/2])==NULL) m2=1;//判断中间一位是不是镜像的 //cout<<m1<<" "<<m2<<" "; cout<<s; switch(m1*=m2) { case 1:cout<<" -- is not a palindrome....

SuCicada

uva 455 - Periodic Strings (找字符串周期)

习题3-4 周期串(Periodic Strings, UVa455) 如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 输入一个长度不超过80的字符串,输出其最小周期。 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=830&problem=396&mosmsg=Submission+received+with+ID+20473859 //先找到和第一个元素相等的下一个元素,然后第一个元素位和找到的元素位依次往后过, //一直到结束,若一直一样则周期为找到的元素位。 //比如ababcababc, //1.s[0]先找到了和s[1]相等,然后分析, //2.s[0+1]和s[1+1]比,相等。 //3.s[0+1+1]再和s[1+1+1],不等,跳出 //4.s[0]再和s[2],s[3],s[4]比。。。 #include<iostream> #include<cstdio> #include<string.h> using namespace std; const int N = 80; char s[N+5]; int cir(int i) { int n=strlen(s); if(n%i!=0)//防止aba或abca输出2或3而不是3或4的情况 return 0; for(int j=i;j<strlen(s);j++)//顺次比较前后字串相等否 { if(s[j-i]!=s[j]) { return 0; } } return i; } int main () { int tt; scanf("%d",&tt); while(tt--) { scanf("\n%s",s); int T=0;//周期 int i,n=strlen(s); for(i=1;i<n;i++) { if(s[0]==s[i]) { if((T=cir(i))==i) { break; } } } cout<<i<<endl; if(tt!...

SuCicada

uva 489 - Hangman Judge(吊人游戏)

例题4-2 刽子手游戏(Hangman Judge, UVa 489) 刽子手游戏其实是一款猜单词游戏,如图4- 1所示。游戏规则是这样的:计算机想一个单词 让你猜,你每次可以猜一个字母。如果单词里有 那个字母,所有该字母会显示出来;如果没有那 个字母,则计算机会在一幅“刽子手”画上填一 笔。这幅画一共需要7笔就能完成,因此你最多 只能错6次。注意,猜一个已经猜过的字母不!算 错。 在本题中,你的任务是编写一个“裁判”程 序,输入单词和玩家的猜测,判断玩家赢了 (You win.)、输了(You lose.)还是放弃了 (You chickened out.)。每组数据包含3行,第1 行是游戏编号(-1为输入结束标记),第2行是 计算机想的单词,第3行是玩家的猜测。后两行 保证只含小写字母。 注意,猜一个已经猜过的字母不算 错。! Sample Input 1 cheese chese 2 cheese abcdefg 3 cheese abcdefgij -1 Sample Output Round 1 You win. Round 2 You chickened out. Round 3 You lose. https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=832&page=show_problem&problem=430 用两个整型来记录当前还允许错的次数,和原始字符串的总字符数 1,因为重复猜测不算错,所以我们先将guess字符串中的重复字符消去,用循环和string::erase() 2,外循环猜测字符串,内循环原始字符串,如果相同,就将原始字符串的此元素变成‘ * ’。 3,没猜中一次就记录,内循环结束后来更新记录。若果win或lose就return函数,否则循环都结束之后就说明是‘弃权’。 #include<iostream> #include<string> using namespace std; string orig,guess; int hang(int num,int right) { for(int i=0;i<guess....

SuCicada

uva 508 - Morse Mismatches(摩斯码)

习题4-6 莫尔斯电码(Morse Mismatches, ACM/ICPC World Finals 1997, UVa508) 输入每个字母的Morse编码,一个词典以及若干个编码。对于每个编码,判断它可能是 哪个单词。如果有多个单词精确匹配,选取字典序第一个再加上“!”;如果无法精确匹 配,可以在编码尾部增加或删除一些字符以后匹配某个单词(增加或删除的字符应尽量少)。如果有多个单词可以这样匹配上,选取字典序第一个输出并且在后面加上“?”。 。 提供一个样例 Sample Input A .- B -… C -.-. D -.. E . F ..-. G –. H …. I .. J .— K -.- L .-.. M – N -. O — P .–. Q –.- R .-. S … T - U ..- V …- W .– X -..- Y -.– Z –.. 0 ——...

SuCicada

uva 509 RAID!(磁盘数据)

习题4-7 RAID技术(RAID!, ACM/ICPC World Finals 1997, UVa509) RAID技术用多个磁盘保存数据。每份数据在不止一个磁盘上保存,因此在某个磁盘损 坏时能通过其他磁盘恢复数据。本题讨论其中一种RAID技术。数据被划分成大小 为s(1≤s≤64)比特的数据块保存在d(2≤d≤6)个磁盘上,如图4-9所示,每d-1个数据块都 有一个校验块,使得每d个数据块的异或结果为全0(偶校验)或者全1(奇校验)。 图4-9 数据保存情况 例如,d=5,s=2,偶校验,数据6C7A79EDFC(二进制01101100 01111010 01111001 11101101 11111100)的保存方式如图4-10所示。 图4-10 数据6C7A79EDPC的保存方式 其中加粗块是校验块。输入d、s、b、校验的种类(E表示偶校验,O表示奇校验)以 及b(1≤b≤100)个数据块(其中“x”表示损坏的数据),你的任务是恢复并输出完整的数 据。如果校验错或者由于损坏数据过多无法恢复,应报告磁盘非法。 Sample Input 5 2 5 E 0001011111 0110111011 1011011111 1110101100 0010010111 3 2 5 E 0001111111 0111111011 xx11011111 3 5 1 O 11111 11xxx x1111 0 Sample Output Disk set 1 is valid, contents are: 6C7A79EDFC Disk set 2 is invalid. Disk set 3 is valid, contents are: FFC...

SuCicada

uva 512 - Spreadsheet Tracking(Excel表格)

例题4-5 踪电子表格中的单元格(Spreadsheet Tracking, ACM/ICPC World Finals 1997, UVa512) 有一个r行c列(1≤r,c≤50)的电子表格,行从上到下编号为1~r,列从左到右编号为1 ~c。如图4-2(a)所示,如果先删除第1、5行,然后删除第3, 6, 7, 9列,结果如图4-2(b) 所示。 (a) (b) 图4-2 删除行、列 接下来在第2、3、5行前各插入一个空行,然后在第3列前插入一个空列,会得到如图4- 3所示结果。 图4-3 插入行、列 你的任务是模拟这样的n个操作。具体来说一共有5种操作: EX r1 c1 r2 c2交换单元格(r1,c1),(r2,c2)。 A x1 x2 … xA 插入或删除A行或列(DC-删除列,DR-删除行,IC-插入 列,IR-插入行,1≤A≤10)。 在插入/删除指令后,各个x值不同,且顺序任意。接下来是q个查询,每个查询格式 为“r c”,表示查询原始表格的单元格(r,c)。对于每个查询,输出操作执行完后该单元格的新 位置。输入保证在任意时刻行列数均不超过50。 Sample Input 7 9 5 DR 2 1 5 DC 4 3 6 7 9 IC 1 3 IR 2 2 4 EX 1 2 6 5 4 4 8...

SuCicada

UVA 514 - Rails ( 铁轨)

例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514) 某城市有一个火车站,铁轨铺设如图6-1所示。 有n节车厢从A方向驶入车站,按进站顺 序编号为1~n。 你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出 车站。 例如,出栈顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。 为了重组车厢,你可以借助中转站C。 这是一个可以停放任意多节车厢的车站,但由于 末端封顶,驶入C的车厢必须按照相反的顺序驶出C。 对于每个车厢,一旦从A移入C,就不 能再回到A了;一旦从C移入B,就不能回到C了。 换句话说,在任意时刻,只有两种选择: A→C和C→B。 Sample Input 5 1 2 3 4 5 5 4 1 2 3 0 6 6 5 4 3 2 1 0 0 Sample Output Yes No Yes https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=838&page=show_problem&problem=455 和书上的思路一样 车进入是先从1到n 我们每进入一辆,就判断一下是不是要出去的那一辆, 如果是,这辆车就走了,然后判断一下下一辆 如果不是就进入中转轨道中等的 #include<iostream> #include<stack> using namespace std; // [注意] 最后一组输出之后要有一个空行 int fun(int N){ stack<int> wait; // 等待通过的火车 stack<int> temp; // 中转轨道 for(int i=N;i>=1;i--){ wait....

SuCicada

uva 540 - Team Queue(插队队列)

例题5-6 团体队列(Team Queue,UVa540) 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个 新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。 输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进 行)。 ENQUEUEx:编号为x的人进入长队。 DEQUEUE:长队的队首出队。 STOP:停止模拟。 对于每个DEQUEUE指令,输出出队的人的编号。 Sample Input 2 3 101 102 103 3 201 202 203 ENQUEUE 101 ENQUEUE 201 ENQUEUE 102 ENQUEUE 202 ENQUEUE 103 ENQUEUE 203 DEQUEUE DEQUEUE DEQUEUE DEQUEUE DEQUEUE DEQUEUE STOP 2 5 259001 259002 259003 259004 259005 6 260001 260002 260003 260004 260005 260006 ENQUEUE 259001 ENQUEUE 260001 ENQUEUE 259002 ENQUEUE 259003 ENQUEUE 259004 ENQUEUE 259005 DEQUEUE DEQUEUE...

SuCicada

UVA 548 - Tree(树) By SuCicada

例题6-8 树(Tree, UVa 548) 给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍 历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权应尽量小。 输入中每两行表示一棵树,其中第一行为中序遍历,第二行为后序遍历。 样例输入: 3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 8 11 3 5 16 12 18 8 3 11 7 16 18 12 5 255 255 样例输出: 1 3 255 本家地址 在根据中序和后序遍历进行构造的时候,同时计算叶子的权值和,比较选择最小的权值的叶子,记录最小权值和的叶子和权值和。 #include<iostream> #include<cstdio> #include<sstream> #include<cstring> using namespace std; int inorder[10004]; int postorder[10004]; int inindex[10004]; int min_top_value = 100000004; // 最小的权和 int loft = -1; // 叶子本身的值, /* 参数: 当前子树的 中序前,后 后序前,后 */ int calcul(int in_begin, int in_end, int post_begin, int post_end, int alculate_root_value){ // in_end - in_begin == post_end - post_begin int root_value = postorder[post_end]; // 根, 从后序 int root_in_index = inindex[root_value];//fin_inorder(in_begin, in_end, root_value); alculate_root_value = alculate_root_value + root_value; // 新的累计根值, 加上自己身上的 if(in_end <= in_begin){ // 叶子了 if(loft == -1 || // 第一个叶子 (alculate_root_value < min_top_value) || (alculate_root_value == min_top_value && inorder[in_begin] < loft) ) { min_top_value = alculate_root_value; loft = inorder[in_begin]; } return 0; } int len = root_in_index-1-in_begin; if(root_in_index > in_begin){ calcul(in_begin, root_in_index-1, post_begin, post_begin + len, alculate_root_value); // 左枝 } len = in_end - root_in_index-1; if(root_in_index < in_end){ calcul(root_in_index+1, in_end, post_end-1-len , post_end-1, alculate_root_value); // 右枝 } return 0; } void init(){ memset(inorder,0,sizeof(inorder)); memset(postorder,0,sizeof(postorder)); memset(inindex,0,sizeof(inindex)); min_top_value = 100000004; // 最小的权和 loft = -1; // 叶子本身的值 } int main() { int row = 0; string line; while(getline(cin,line)){ // cout<<n<<" "; stringstream ss(line); int i=0; int n; if(row==0){ // 新的一组, 要初始化 // 代表是一组中的第一行,即中序遍历 init(); while(ss>>n){ inorder[i] = n; inindex[n] = i; i++; } row = 1; }else{ // 一组中的第二行, 即后序遍历 while(ss>>n){ postorder[i++] = n; } row = 0; calcul(0,i-1,0,i-1,0); cout<<loft<<endl; } return 0; } // AC at 2020/03/21 ps:债还清了,这个代码提交了12次数,uva因为赞助商跑路的关系(不知道也没有关系),感觉现在更加慢了。网站首页筹集代码贡献。也想做点贡献,但是C++的网站。。。

SuCicada

UVA 572 - Oil Deposits (油田) By SuCicada

例题6-12 油田(Oil Deposits, UVa 572) 输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在 的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。例如,图6-9中有两 个八连块。 Sample Input 1 1 * 3 5 @@* @ @@* 1 8 @@***@ 5 5 ****@ @@@ @**@ @@@@ @@**@ 0 0 Sample Output 0 1 2 2 本家连接 恩,嘛,遍历跑呗。反正到处都有。 #include<iostream> using namespace std; char oil[110][110]; int sum=0; int length,width; int isOil=0; void show(){ for(int i=0;i<length;i++){ for(int j=0;j<width;j++) cout<<oil[i][j]; cout<<endl; } // cout<<"========================"<<endl; cout<<endl; } int dfs(int x,int y){ char plot = oil[x][y]; if(x<0 || x>=length || y<0 || y>=width || plot!...

SuCicada

UVA 679 - Dropping Balls (小球下落) By SuCicada

例题6-6 小球下落(Dropping Balls, UVa 679) 有一棵二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从上到下从左到右 编号为1, 2, 3,…, 2D-1。在结点1处放一个小球,它会往下落。每个内结点上都有一个开关, 初始全部关闭,当每次有小球落到一个开关上时,状态都会改变。当小球到达一个内结点 时,如果该结点上的开关关闭,则往左走,否则往右走,直到走到叶子结点,如图所 示。 一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深度D和 小球个数I,输出第I个小球最后所在的叶子编号。假设I不超过整棵树的叶子个数。D≤20。 输入最多包含1000组数据。 样例输入: 6 4 2 3 4 10 1 2 2 8 128 16 12345 -1 样例输出: 12 7 512 3 255 36358 本家链接 最简单能想到的就是模拟,模拟球的下落,但是输入一旦大了就超时了。 所以我们可以,找规律。 首先假设有6层,我们来扔球看看情况 球数 落下位置(最后一行,第一个为0计数) 0 0 1 16 2 8 3 24 4 4 5 20 6 12 7 28 8 2 9 18 10 10 11 26 12 6 13 22 14 14 15 30 --- 16 1 17 17 18 9 19 25 20 5 21 21 22 13 23 29 24 3 25 19 26 11 27 27 28 7 29 23 30 15 31 31 ==== 第33开始轮回 === 32 0 33 16 34 8 35 24 36 4 37 20 38 12 39 28 发现规律了吧。...

SuCicada

UVA 699 - The Falling Leaves (落叶) By SuCicada

例题6-10 下落的树叶(The Falling Leaves, UVa 699) 给一棵二叉树,每个结点都有一个水平位 置:左子结点在它左边1个单位,右子结点在右 边1个单位。从左向右输出每个水平位置的所有 结点的权值之和。如图6-7所示,从左到右的3个 位置的权和分别为7,11,3。按照递归(先序) 方式输入,用-1表示空树。 样例输入: 5 7 -1 6 -1 -1 3 -1 -1 8 2 9 -1 -1 6 5 -1 -1 12 -1 -1 3 7 -1 -1 -1 -1 样例输出: Case 1: 7 11 3 Case 2: 9 7 21 15 【注意】 一棵树的输[入可能分为多行。输出最多一行80个(代表树最多80列) 本家地址 一边输入一边记录左右结点的值,放在数组中叠加。唯一的问题就是存在左右子树,无法确定左右范围具体为多少,所以可以采用两种方法: 设定一个最大的范围,80*2-1 范围,选择最中点为root结点,然后左右放置子节点。 将左右子树分开存放,右子树包含根节点,放置一个数组,下标递增代表结点向右扩增。将左子树放置另一个数组,下标递增代表结点向左扩增。如果以根节点为坐标轴0,那么左子树放置的坐标中就是反坐标轴,只是方向相反。 我采用第2种,因为一开始不知道范围(貌似) #include<iostream> #include<cmath> #include<cstdio> #include<cstring> using namespace std; int leftTree[100] = {0}; int rightTree[100] = {0}; /* include root */ int leftIndex = 0; int rightIndex = 0; char c; int tree(int index){ int n; cin>>n; if(n!...

SuCicada

UVA 816 - Abbott‘s Revenge (Abbott的复仇) By SuCicada

例题6-14 Abbott的复仇(Abbott’s Revenge, ACM/ICPC World Finals 2000, UVa 816) 有一个最多包含9*9个交叉点的迷宫。输入起点、离开起点时的朝向和终点,求一条最 短路(多解时任意输出一个即可)。 图6-14 迷宫及走向 这个迷宫的特殊之处在于:进入一个交叉点 的方向(用NEWS这4个字母分别表示北东西 南,即上右左下)不同,允许出去的方向也不 同。例如,1 2 WLF NR ER 表示交叉点(1,2) (上数第1行,左数第2列)有3个路标(字 符“”只是结束标志),如果进入该交叉点时的 朝向为W(即朝左),则可以左转(L)或者直 行(F);如果进入时朝向为N或者E则只能右转 (R),如图6-14所示。 注意:初始状态是“刚刚离开入口”,所以即 使出口和入口重合,最短路也不为空。例如,图 6-14中的一条最短路为(3,1) (2,1) (1,1) (1,2) (2,2) (2,3) (1,3) (1,2) (1,1) (2,1) (2,2) (1,2) (1,3) (2,3) (3,3)。 Sample Input SAMPLE 3 1 N 3 3 1 1 WL NR * 1 2 WLF NR ER * 1 3 NL ER * 2 1 SL WR NF *...

SuCicada

UVA 839 - Not so Mobile (天平)By SuCicada

例题6-9 天平(Not so Mobile, UVa 839) 输入一个树状天平,根据力矩相等原则判断是否平衡。如图6-5所示,所谓力矩相等, 就是WlDl=WrDr,其中Wl和Wr分别为左右两边砝码的重量,D为距离。 采用递归(先序)方式输入:每个天平的格式为Wl,Dl,Wr,Dr,当Wl或Wr为0时,表 示该“砝码”实际是一个子天平,接下来会描述这个子天平。当Wl=Wr=0时,会先描述左子天 平,然后是右子天平。 样例输入: 1 0 2 0 4 0 3 0 1 1 1 1 1 2 4 4 2 1 6 3 2 Sample Output YES 【注意】 输出结果之间空一行 本家地址 递归走,一边输入每一结点,一边递归判断这个结点的左结点结果(左子树重量总和)和右结点结果(右子树重量总和)是否满足要求。 这样的话在建立树的时候也就直接计算结束了。 #include<iostream> using namespace std; int lair(){ int wl,dl,wr,dr; cin>>wl>>dl>>wr>>dr; if(wl == 0){ /* have left branch */ wl = lair(); } if(wr == 0){ wr = lair(); } if(wl==0 || wr==0 || wl*dl !...

SuCicada

UVa Online Judge 西班牙Valladolid 在线判官 和 uDebug使用简单教程

udebug使用在后面 https://uva.onlinejudge.org/ 1、这是主界面,如果你还没有账号,那么就点击图中的register。 2、然后就是填写信息,邮箱要用gmail,信息填写完成后点击下方的register 3、之后打开邮箱查看接受的邮件,并点击其中的链接完成注册确认,之后会转到uva oj,如果页面显示 your account is now active.You may now log in!则表示注册完成。 4、然后输入用户名密码登录 5、然后在左边的栏目中,点击Browse Problems 就可以找到有关刘汝佳以及其他一些著名套题了。 6、然后是关于如何答题,现在我们打开了一道题目,看图上红框住的左上角, (1)其中我们点击PDF,会下载下来本道题的pdf格式文件 (2)我们点击submit就是提交代码了。 其中如果是用的C语言或C++选择第一个c++,提交结果没有ac,如果不是代码问题,那么试试选择c++11吧。 参考了UVAOJ的注册和评测入门 (3)最后我想说一下在看题界面的那个Debug选项,就是旁边有个红色的甲虫的。 若果打不开udebug就挂vpn试试吧 https://www.udebug.com/UVa/1589 (当前是1589号题) 我们点进去后,一共四部分。上左边就是一些用户上传的关于本题的一些样例。点击其中一个,这些样例就会显示在右边的框中。 然后我们点击下方写着Get Accepted Output蓝格,就会在下方的左边出现这些样例的正确输出结果。我们可以把这些样例用我们的代码输出的结果粘到右边的框中。之后点击Compare Outputs 进行对比。 这样我就能很方便的知道我们的代码在处理哪一个样例上出现里问题,更改起来也更有方向性。还有如果出现了图中的情况,明明都对但还是显示不对,那是因为他的输出默认多了一个空行,这个一般和代码没有关系。默认为对就行了。 我们还可以在上面快速搜索你需要的题号。 目前支持这些oj 这是主页https://www.udebug.com/ 可以去他的Twitter和Facebook上看看,网上关于udegug的信息不多。

SuCicada

uva1583 - Digit Generator (生成元)

如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小 生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。 Sample Input 3 216 121 2005 Sample Output 198 0 1979 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=829&page=show_problem&problem=4458 //先算出所有的生成元x的原数y,以s[y]=x的形式将其存起,在求y的解x的时候,直接输出是s[y]即可 //所以为了求最小生成元也就是x,就要从尾到头的循环算y。 #include<iostream> #include<cstdio> #include<string.h> using namespace std; int const N = 100000; int sn[N+5]={0}; int main() { memset(sn,0,sizeof(sn)); for(int i=N;i>=0;i--) { int n=i; int s=i; while(n>0) { s+=n%10; n/=10; } sn[s]=i; } //for(int i=0;i<N;i++) // cout<<sn[i]<<" "; // cout<<endl; int n,T; cin>>T; while(T--) { int i; cin>>n; cout<<sn[n]<<endl; } return 0; } //AC at 2017/12/7 以下算法虽然一样可以算出正确答案,但是超时,oj不通过。...

SuCicada

uva272 (TeX)

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=829&page=show_problem&problem=208 TEX is a typesetting language developed by Donald Knuth. It takes source text together with a few typesetting instructions and produces, one hopes, a beautiful document. Beautiful documents use “ and ” to delimit quotations, rather than the mundane " which is what is provided by most keyboards. Keyboards typically do not have an oriented double-quote, but they do have a left-single-quote and a right-single-quote '. Check your keyboard now to locate the left-single-quote key (sometimes...

SuCicada