青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
    發指啊... 第一次快寫完了結果傲游掛了... ...直接全部重來啊... ...OMG
       
    這套比2005年的稍難, 不過基本都是小模擬啦, 對ACM菜鳥來說都是大水題~~

1. 還是A+B
    注意題目第三個case, 8的前面全當成0, 所以108和8的前兩位看作相同的
    我的方法很WS, 因為題目說不超過8位, 就先把不足8位的數字串補足8位, 高位全填0, 然后從后面開始比較k位就ok了~
//浙大計算機研究生復試上機考試-2006年 還是A+B
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int k, s1, s2, l1, l2;
char a[10], b[10];

int cal(char *s) {
    
int i, t = 0;
    
for(i = 0; s[i]; ++i) t = t * 10 + s[i] - '0';
    
return t;
}


int main() {
    
int i;
    
while(1{
        scanf(
"%s %s %d", a, b, &k);
        
if(!strcmp(a, "0"&& !strcmp(b, "0")) break;
        l1 
= strlen(a); l2 = strlen(b);
        
for(i = 7; i > 7 - l1; --i) a[i] = a[l1 + i - 8];
        
for(i = 0; i <= 7 - l1; ++i) a[i] = '0';
        
for(i = 7; i > 7 - l2; --i) b[i] = b[l2 + i - 8];
        
for(i = 0; i <= 7 - l2; ++i) b[i] = '0';
        
if(!strncmp(a + 8 - k,b + 8 - k, k)) {
            puts(
"-1");
            
continue;
        }

        s1 
= cal(a); s2 = cal(b);
        printf(
"%d\n", s1 + s2);
    }

    
return 0;
}


2. 火星A+B
    一開始理解錯題意了, 不過應該不會有人跟我有一樣NC的理解吧... = = ...就不說了
    有點像高精度加法, 一位位加就好了, 注意進制, 先打出100以內的質數表(保險起見多打了兩個)
    開始一處初始化忘了, WA三次才發現... ...
    PS: Discuss驚現ECUST-SJTU---ssjia大牛, 各種Orz
    2011.09.17 PS: 這題九度上死活過不了啊... 求交流
//浙大計算機研究生復試上機考試-2006年 火星A+B
#include<ctype.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<algorithm>
    
using namespace std;

int bas[] = {2357111317192329313741434753596167717379838997101103};
int a[30], b[30], c[30], l1, l2;
char s1[300], s2[300];

int main() {
    
int i, tn1, tn2, tp;
    
while(1{
        scanf(
"%s %s", s1, s2);
        
if(!strcmp(s1, "0"&& !strcmp(s2, "0")) break;
        l1 
= strlen(s1);
        l2 
= strlen(s2);
        memset(a, 
0sizeof(a));
        memset(b, 
0sizeof(b));
        memset(c, 
0sizeof(c));
        tn1 
= tn2 = 0; tp = 1;
        
for(i = l1 - 1; i >= 0--i) {
            
if(s1[i] == ','{
                tn1
++;
                tp 
= 1;
            }

            
else if(isdigit(s1[i])) {
                a[tn1] 
= a[tn1] + tp * (s1[i] - '0');
                tp 
*= 10;
            }

        }

        tp 
= 1;
        
for(i = l2 - 1; i >= 0--i) {
            
if(s2[i] == ','{
                tn2
++;
                tp 
= 1;
            }

            
else if(isdigit(s2[i])) {
                b[tn2] 
= b[tn2] + tp * (s2[i] - '0');
                tp 
*= 10;
            }

        }

        
int cf = 0;
        
for(i = 0; i <= min(tn1, tn2); ++i) {
            c[i] 
= cf + a[i] + b[i];
            
if(c[i] >= bas[i]) {
                cf 
= c[i] / bas[i];
                c[i] 
%= bas[i];
            }

            
else
                cf 
= 0;
        }

        
for(;i <= max(tn1, tn2); ++i) {
            
if(i <= tn1) {
                c[i] 
= cf + a[i];
                
if(c[i] >= bas[i]) {
                    cf 
= c[i] / bas[i];
                    c[i] 
%= bas[i];
                }

                
else
                    cf 
= 0;
            }

            
else if(i <= tn2) {
                c[i] 
= cf + b[i];
                
if(c[i] >= bas[i]) {
                    cf 
= c[i] / bas[i];
                    c[i] 
%= bas[i];
                }

                
else
                    cf 
= 0;
            }

        }

        c[i] 
+= cf;
        
if(c[i] >= bas[i]) {
            cf 
= c[i] / bas[i];
            c[i] 
%= bas[i];
        }

        
else
            cf 
= 0;
        
if(cf) c[++i] = cf;
        
while(c[i] == 0 && i > 0--i;
        
for(; i > 0--i) printf("%d,", c[i]);
        printf(
"%d\n", c[0]);
    }

    
return 0;
}


3. 還是暢通工程
    模板題, 不解釋

//浙大計算機研究生復試上機考試-2006年 還是暢通工程
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define N 110
#define INF 0x3f3f3f3f

int n, adj[N][N], lowcost[N], closest[N];

void prim(int c[][N]) {
    
bool s[N];
    s[
1= true;
    
for(int i = 2; i <= n; ++i) {
        lowcost[i] 
= c[1][i];
        closest[i] 
= 1;
        s[i] 
= false;
    }

    
for(int i = 1; i < n; ++i) {
        
int mix = INF, j = 1;
        
for(int k = 2; k <= n; ++k)
            
if(lowcost[k] < mix && !s[k]) {
                mix 
= lowcost[k];
                j 
= k;
            }

            s[j] 
= true;
            
for(int k = 2; k <= n; ++k)
                
if(c[j][k] < lowcost[k] && !s[k]) {
                    lowcost[k] 
= c[j][k];
                    closest[k] 
= j;
                }

    }

}


int main() {
    
int i, j, ans, a, b, c;
    
while(scanf("%d"&n), n) {
        
for(i = 1; i <= n * (n - 1/ 2++i) {
            scanf(
"%d %d %d"&a, &b, &c);
            adj[a][b] 
= adj[b][a] = c;
        }

        prim(adj);
        ans 
= 0;
        
for(i = 1; i <= n; ++i) ans += lowcost[i];
        printf(
"%d\n", ans);
    }

    
return 0;
}



4. 統計同成績學生人數
    大水題, 不解釋

//浙大計算機研究生復試上機考試-2006年 統計同成績學生人數
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define N 1010

int a[N], n, ans;

int main() {
    
int x, i;
    
while(scanf("%d"&n), n) {
        
for(i = 0; i < n; ++i) scanf("%d"&a[i]);
        scanf(
"%d"&x);
        ans 
= 0;
        
for(i = 0; i < n; ++i)
            
if(a[i] == x) ans++;
        printf(
"%d\n", ans);
    }

    
return 0;
}



5. 簡單計算器
    我的方法比較麻煩... ...設置兩個棧(偷懶用了STL, 慢就慢吧...||), 一個符號棧, 一個操作數棧
    當讀進操作數時, 若符號棧棧頂為*或/, 就馬上計算掉, 彈出操作數棧棧頂連續兩個元素和符號棧棧頂, 算好之后結果壓進操作數棧, 這里注意下運算順序, '-','/'都是有計算順序要求的
    當讀到運算符時, 什么都不管, 直接壓進符號棧
    最后把操作數棧和符號棧元素全部倒置(稍微想想就知道為什么了, 一開始這里沒想清楚, 單步了好一會兒才發現... ...), 然后不斷彈出符號棧棧頂符號和操作數棧頂連續兩個操作數, 計算完后結果壓入操作數棧, 直至符號棧為空.

//浙大計算機研究生復試上機考試-2006年 簡單計算器
#include<stack>
#include
<ctype.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
using namespace std;

double cal(double a, double b, char c) {
    
if(c == '+'return a + b;
    
if(c == '-'return a - b;
    
if(c == '*'return a * b;
    
if(c == '/'return a / b;
}


int main() {
    
int i;
    
char op[210];
    
while(gets(op), strcmp(op, "0"!= 0{
        i 
= 0;
        stack
<double> opa;
        stack
<char> opr;
        
while(op[i]) {
            
if(isdigit(op[i])) {
                
double tp = 0.0;
                
while(isdigit(op[i])) {
                    tp 
= tp * 10 + op[i] - '0';
                    
++i;
                }

                opa.push(tp);
                
if(!opr.empty() && opr.top() == '*'{
                    opr.pop();
                    
double t1 = opa.top(); opa.pop();
                    
double t2 = opa.top(); opa.pop();
                    opa.push(cal(t2, t1, 
'*'));
                }

                
else if(!opr.empty() && opr.top() == '/'{
                    opr.pop();
                    
double t1 = opa.top(); opa.pop();
                    
double t2 = opa.top(); opa.pop();
                    opa.push(cal(t2, t1, 
'/'));
                }

            }

            
else if(op[i] == '+'{
                opr.push(
'+');
                
++i;
            }

            
else if(op[i] == '-'{
                opr.push(
'-');
                
++i;
            }

            
else if(op[i] == '*'{
                opr.push(
'*');
                
++i;
            }

            
else if(op[i] == '/'{
                opr.push(
'/');
                
++i;
            }

            
else
                
++i;
        }

        stack
<char>opr1;
        stack
<double>opa1;
        
while(!opr.empty()) {
            opr1.push(opr.top());
            opr.pop();
        }

        
while(!opa.empty()) {
            opa1.push(opa.top());
            opa.pop();
        }

        
while(!opr1.empty()) {
            
double t1 = opa1.top(); opa1.pop();
            
double t2 = opa1.top(); opa1.pop();
            opa1.push(cal(t1, t2, opr1.top()));
            opr1.pop();
        }

        printf(
"%.2lf\n", opa1.top());
    }

    
return 0;
}


2011.09.10 PS: 這題又用了另一種方法做
     遇到數字的時候不處理, 直接壓入操作數棧, 遇到'*'或'/'時, 操作符棧頂連續的'*'或'/'都計算掉, 再將自己壓入操作符棧, 遇到'+'或'-'時, 操作符棧里的都能計算掉, 計算完后再將自己壓入操作符棧, 最后將操作符棧從棧頂依次處理即可, 因為此時不會出現多個'+''-', '*''/'相連導致運算順序錯誤的情況
     本來以為這樣很方便, 結果代碼比原來長了快一倍... (因為寫得挫... )
     其實像書上那樣加入結束字符再處理的話代碼應該會短一些... 有空再敲一次

//2006年浙江大學計算機及軟件工程研究生機試題 簡單計算器
#include<ctype.h>
#include
<stack>
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
using namespace std;

double cal(double a, double b, char c) {
    
if(c == '+'return a + b;
    
if(c == '-'return a - b;
    
if(c == '*'return a * b;
    
if(c == '/'return a / b;
}


int main() {
    
int i;
    
char op[220];
    
while(gets(op), strcmp(op, "0")) {
        i 
= 0;
        stack
<double> opa;
        stack
<char> opr;
        
while(op[i]) {
            
if(isdigit(op[i])) {
                
double tp = 0.0;
                
while(isdigit(op[i])) {
                    tp 
= tp * 10 + op[i] - '0';
                    
++i;
                }

                opa.push(tp);
            }

            
else if(op[i] == '+'{
                
if(opr.empty()) opr.push('+');
                
else {
                    
while(!opr.empty()) {
                        
if(opr.top() == '+'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opr.pop();
                            opa.push(cal(t2, t1, 
'+'));
                        }

                        
else if(opr.top() == '-'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'-'));
                            opr.pop();
                        }

                        
else if(opr.top() == '*'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'*'));
                            opr.pop();
                        }

                        
else if(opr.top() == '/'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'/'));
                            opr.pop();
                        }

                    }

                    opr.push(
'+');
                }

                
++i;
            }

            
else if(op[i] == '-'{
                
if(opr.empty()) opr.push('-');
                
else {
                    
while(!opr.empty()) {
                        
if(opr.top() == '-'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'-'));
                            opr.pop();
                        }

                        
else if(opr.top() == '+'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'+'));
                            opr.pop();
                        }

                        
else if(opr.top() == '*'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'*'));
                            opr.pop();
                        }

                        
else if(opr.top() == '/'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'/'));
                            opr.pop();
                        }

                    }

                    opr.push(
'-');
                }

                
++i;
            }

            
else if(op[i] == '*'{
                
if(opr.empty()) opr.push('*');
                
else {
                    
while(!opr.empty()) {
                        
if(opr.top() == '*'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'*'));
                            opr.pop();
                        }

                        
else if(opr.top() == '/'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'/'));
                            opr.pop();
                        }

                        
else
                            
break;
                    }

                    opr.push(
'*');
                }

                
++i;
            }

            
else if(op[i] == '/'{
                
if(opr.empty()) opr.push('/');
                
else {
                    
while(!opr.empty()) {
                        
if(opr.top() == '/'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'/'));
                            opr.pop();
                        }

                        
else if(opr.top() == '*'{
                            
double t1 = opa.top(); opa.pop();
                            
double t2 = opa.top(); opa.pop();
                            opa.push(cal(t2, t1, 
'*'));
                            opr.pop();
                        }

                        
else
                            
break;
                    }

                    opr.push(
'/');
                }

                
++i;
            }

            
else
                
++i;
        }

        
while(!opr.empty()) {
            
double t1 = opa.top(); opa.pop();
            
double t2 = opa.top(); opa.pop();
            opa.push(cal(t2, t1, opr.top()));
            opr.pop();
        }

        printf(
"%.2lf\n", opa.top());
    }

    
return 0;
}


 

Feedback

# re: 浙大計算機研究生復試上機考試-2006年  回復  更多評論   

2012-03-02 10:49 by
最后把操作數棧和符號棧元素全部倒置(稍微想想就知道為什么了, 一開始這里沒想清楚, 單步了好一會兒才發現... ...),
為什么啊?還是沒想明白,盼能解答

# re: 浙大計算機研究生復試上機考試-2006年  回復  更多評論   

2012-03-02 14:16 by Uriel
@毛
因為最后只剩加減法,加減法是從左到右依次計算,而在進棧時是從左到右進棧的,出棧順序與入棧相反,直接出棧一個計算一個的話就變成是從右到左計算了,所以倒置一下。。(不過這種做法很挫就是了。。= =)

# re: 浙大計算機研究生復試上機考試-2006年  回復  更多評論   

2012-03-02 14:26 by
哦,想通了。一下子腦子短路了,好笨啊!!!我也想的是這個方法,嘿嘿。可每次提交都是WA,看了帖子才知道錯在這了,謝謝~~~

# re: 浙大計算機研究生復試上機考試-2006年  回復  更多評論   

2012-03-02 14:30 by Uriel
@毛
表示我當時debug了半天才發現。。= =
感覺做題之前還是該拿筆算算,想想清楚。。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品福利在线| 亚洲欧美成人一区二区在线电影| 欧美日韩色一区| 久久国产精彩视频| 一区二区高清视频在线观看| 欧美国产日本在线| 久久久久国产精品厨房| 欧美一区二区日韩一区二区| 国产日产欧美精品| 国产精品视频一| 国产精品免费一区豆花| 国产精品久久久久毛片大屁完整版| 欧美久久久久久久| 欧美日韩伦理在线免费| 欧美日韩精品一二三区| 欧美制服丝袜| 好吊色欧美一区二区三区四区| 国产精品一区二区三区久久久| 国产精品爽黄69| 欧美日韩亚洲视频| 欧美日韩精品| 欧美日韩一区在线| 欧美色大人视频| 国产精品久久一卡二卡| 国产精品夜夜夜| 国产一区二区久久| 在线观看精品一区| 亚洲精选一区二区| 一区二区欧美精品| av成人动漫| 亚洲一区在线免费| 久久久久久久久久久久久女国产乱 | 午夜视频在线观看一区二区| 亚洲综合日韩在线| 性欧美1819sex性高清| 欧美精品七区| 国产精品久久午夜| 亚洲第一福利社区| 亚洲视频一区二区免费在线观看| 校园春色国产精品| 一区二区三区蜜桃网| 久久riav二区三区| 欧美大片在线观看| 亚洲在线成人| 另类尿喷潮videofree| 欧美体内she精视频在线观看| 国产曰批免费观看久久久| 亚洲日本免费| 久久er精品视频| 欧美高清视频一区二区| 欧美国产日韩一区二区| 在线中文字幕一区| 久久综合网hezyo| 国产噜噜噜噜噜久久久久久久久 | 亚洲免费婷婷| 免费在线亚洲欧美| 国产精品99久久久久久久vr| 久久国产免费| 欧美特黄视频| 亚洲精品免费一二三区| 欧美一级成年大片在线观看| 亚洲第一黄色| 亚洲曰本av电影| 欧美日韩一区二区欧美激情| 在线看国产一区| 久久频这里精品99香蕉| 在线视频精品一| 久久久久国产精品麻豆ai换脸| 欧美三日本三级少妇三2023 | 美女国内精品自产拍在线播放| 国产精品视频区| 亚洲五月六月| 亚洲免费激情| 欧美人与禽猛交乱配| 亚洲国内自拍| 欧美高清在线一区二区| 久久黄色网页| 激情婷婷久久| 免费不卡在线视频| 久久精品女人| 国内精品久久久久影院优| 亚洲国内高清视频| 亚洲国产mv| 欧美成人精品一区二区| 亚洲欧洲免费视频| 欧美大片免费观看在线观看网站推荐| 欧美资源在线| 红桃视频亚洲| 亚洲人成在线观看网站高清| 老牛嫩草一区二区三区日本| 在线亚洲一区观看| 国产精品久久久久久福利一牛影视| 一本色道88久久加勒比精品 | 亚洲一区二区3| 在线视频免费在线观看一区二区| 久久中文欧美| 亚洲精品一区二区三区在线观看 | 欧美日本一区| 亚洲一区国产| 亚洲欧美日韩系列| 韩国一区二区三区美女美女秀| 久久精品一二三| 久久蜜桃av一区精品变态类天堂| 欧美69wwwcom| 一本色道久久综合亚洲精品不| 夜夜躁日日躁狠狠久久88av| 国产精品国产| 久久久久在线观看| 欧美jizzhd精品欧美巨大免费| 日韩一级大片| 午夜在线观看免费一区| 在线日韩精品视频| 亚洲区第一页| 欧美a级片网站| 亚洲视屏在线播放| 欧美有码在线视频| 亚洲伦理在线观看| 亚洲免费在线视频| 亚洲精品孕妇| 亚洲欧美在线免费观看| 亚洲福利久久| 亚洲天堂成人| 亚洲乱码国产乱码精品精可以看| 亚洲欧美中文字幕| 国产一区二区日韩| 亚洲乱码久久| 影音先锋日韩资源| 在线视频中文亚洲| 亚洲精品久久久久中文字幕欢迎你| 99国产精品一区| 一区二区视频免费完整版观看| 日韩视频免费大全中文字幕| 韩国美女久久| 亚洲国产欧美不卡在线观看| 国产亚洲永久域名| 99国产精品国产精品毛片| 加勒比av一区二区| 中文亚洲字幕| 亚洲欧洲一区二区三区在线观看| 亚洲在线观看| 在线视频日韩| 午夜电影亚洲| 亚洲一级一区| 欧美日韩国产不卡| 亚洲国产成人tv| 亚洲午夜电影| 亚洲黄色小视频| 亚洲福利视频专区| 欧美 日韩 国产 一区| 亚洲福利专区| 一本久久a久久免费精品不卡| 欧美日韩91| 一区二区三区你懂的| 午夜精品国产| 韩国成人精品a∨在线观看| 久久久久久久久综合| 亚洲高清自拍| 亚洲综合日韩| 亚洲成人在线| 欧美日韩一区二区三区在线看| 亚洲一区区二区| 久久婷婷激情| 亚洲婷婷在线| 国内精品久久久久影院色| 欧美chengren| 亚洲欧美日韩国产成人| 欧美黄色一区二区| 亚洲永久精品国产| 在线精品视频一区二区三四| 欧美激情一区二区三区在线| 亚洲一区二区免费视频| 久久男人资源视频| 99精品欧美| 国产精品一区二区三区久久| 免费的成人av| 亚洲天天影视| 欧美国产大片| 午夜天堂精品久久久久 | 国产精品婷婷| 老鸭窝亚洲一区二区三区| 国产精品99久久久久久人| 久久深夜福利免费观看| 中文日韩在线| 精品动漫一区二区| 国产精品久久久久影院亚瑟| 久久免费黄色| 亚洲欧美国产日韩中文字幕| 欧美激情亚洲自拍| 久久九九精品| 亚洲一区二区三区午夜| 亚洲区免费影片| 国产亚洲欧美日韩美女| 欧美日韩国产123区| 久久免费黄色| 亚洲欧美精品| av成人激情| 亚洲麻豆国产自偷在线| 欧美高清在线精品一区| 欧美www在线| 美女主播一区|