查看: 859|回复: 9

傻傻学长学习派~

[复制链接]
  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

    发表于 2016-4-18 18:23:27 | 显示全部楼层 |阅读模式
    本帖最后由 fengyu_wollon 于 2016-5-8 01:03 编辑

    傻学长镇楼,学长会的不多,然而学无止境,学弟学妹们一起来学吧....

    持续精彩,期待你们的加入哦~  
    <^...^>


    查看所有:
    ——>精彩在这,戳这里<——


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-25 12:47:29 | 显示全部楼层
    PAT乙级真题1005.继续(3n+1)猜想 (25)(解题)
    2016-4-2
    原题
    卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。
    当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。
    现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

    输入格式:每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1<n<=100)的值,数字间用空格隔开。
    输出格式:每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。
    输入样例:
    63 5 6 7 8 11
    输出样例:
    7 6

    我的理解:
    这道题主要是对题意得分析,搞清楚“关键数"的定义,
    就是该数不会出现在判断数组中某个数是否满足卡拉兹猜想的过程中。
    搞清楚这个,那接下来就简单了。
    首先找出判断某个数满足猜想过程中出现的所有数
    然后让原数组中的数和上一步出现的所有数一一比较,
    只要数组中出现相同匹配的数就想办法把这个数从数组剔除,
    最后排序输出就行

    code
    
    1. #include<stdio.h>
    2. #include<malloc.h>

    3. void sort(int *,int );
    4. int main()
    5. {
    6.     int *a;
    7.     int n,i,t,j;
    8.     scanf("%d",&n);
    9.     a=(int*)malloc(n*sizeof(int));  // 动态申请数组空间
    10.     for(i=0;i<n;i++)
    11.     {
    12.         scanf("%d",&a[i]);
    13.     }
    14.     for(i=0;i<n;i++)
    15.     {
    16.         t=a[i];
    17.         if(t==0)
    18.             continue;//碰到数组中有0的项,则跳过
    19.         while(t!=1)
    20.         {
    21.             if(t%2==0)
    22.                 t/=2;
    23.             else
    24.                 t=(3*t+1)/2;
    25.             for(j=0;j<n;j++)//数组中所有数与运算中出现的数比较
    26.             {
    27.                 if(a[j]==t)//如果数组中有和运算过程中相同的数,就把数组中的该数改为0
    28.                 {
    29.                     a[j]=0;
    30.                     break;//因为输入的数组是互不相同的数,所以不会存在有多个匹配的情况,找到有一个匹配就可跳出,以节省内存减少运行时间。
    31.                 }
    32.             }

    33.         }

    34.     }
    35.     sort(a,n);//排序
    36.     for(i=0;a[i]>0;i++)
    37.     {
    38.         printf("%d%s",a[i],a[i+1]>0?" ":"");
    39.     }
    40. }
    41. void sort(int *P,int K)              //排序
    42. {
    43.     int i,j,temp;
    44.     for(i=0;i<K;i++)
    45.         for(j=i+1;j<K;j++)
    46.         {

    47.             if(P[i]<P[j])
    48.             {
    49.                 temp=P[i];
    50.                 P[i]=P[j];
    51.                 P[j]=temp;
    52.             }
    53.         }
    54. }
    复制代码

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-19 00:51:54 | 显示全部楼层
    本帖最后由 fengyu_wollon 于 2016-4-19 01:00 编辑

    [ 本帖最后由 fengyu_wollon 于 2016-4-19 00:54 编辑 ]\n\nPAT乙级真题1001. 害死人不偿命的(3n+1)猜想 (15)(解题)(2016-04-17 12:57)
    卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?



    输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。



    输出格式:输出从n计算到1需要的步数。  



    输入样例:


    3  


    输出样例:


    5


    code:


    1. /*编译环境**********       vc++6.0(32位)       *************/

    2. #include<stdio.h>
    3. int main()
    4. {
    5.   int n=0;
    6.   int i=0;
    7.   scanf("%d",&n);
    8.   while(n!=1)
    9.   {
    10.     if(n%2==0)
    11.     {
    12.       n/=2;
    13.     }
    14.     else
    15.     {
    16.       n=(3*n+1)/2;
    17.     }
    18.         printf(" %d",n);
    19.     i++;
    20.   }
    21.   printf("%d\n",i);
    22. }
    复制代码




    发现错误别忘了给傻傻学长留言哦~


    也欢迎和傻傻学长交流~

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-19 01:07:46 | 显示全部楼层


    PAT乙级真题1002. 写出这个数 (20)(解题)(2016-04-18 00:39)
    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
    输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
    输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
    输入样例:
    1234567890987654321123456789
    输出样例:
    yi san wu


    code:

    1. /*编译环境**********       vc++6.0(32位)       *************/

    2. #include<stdio.h>
    3. int main()
    4. {
    5.         char py[10][4]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    6.         char n[100];
    7.         int sum=0,i=0;
    8.         gets(n);
    9.         while(n[i]!='\0')
    10.         {
    11.                 sum+=(n[i]-'0');
    12.                 i++;
    13.         }
    14.         if(sum>=99)
    15.         {
    16.                 printf("%s %s %s",py[sum/100],py[sum/10%10],py[sum%10]);
    17.         }
    18.         else if(sum>9)
    19.         {
    20.                 printf("%s %s",py[sum/10%10],py[sum%10]);
    21.         }
    22.         else
    23.         {
    24.                 printf("%s",py[sum]);
    25.         }
    26.         return 0;
    27.        
    28. }
    复制代码


    有想记得留言哦~


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-19 01:28:59 | 显示全部楼层
    深夜鸡汤

    对于许多事都能放得下,都能想得开,愿以善眼望世界

    面对那些厌恶的人和事,不迎合也不抵触,只淡淡一笑

    晚安~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-19 01:41:50 来自手机 | 显示全部楼层
    深夜鸡汤

    每天读一遍,将激发你的斗志!
            我必须奋斗!
    因为赡养父母是我的责任,我不想在父母需要我尽孝时,除了眼泪我一无所有!
            [拳头]我必须奋斗!
    因为我想给我的孩子最好的教育,我不想我的孩子想飞的时候,我无力为他托起梦想!
            [拳头]我必须奋斗!
    因为一起打拼的兄弟姐妹!我不想看到她们的眼神从希望变成无光!
            [拳头]我必须奋斗!
    为了心中的梦想!我不想有一天老去时,回想起来全是蹉跎时光!  
          我必须奋斗!
          我必须奋斗![拳头][拳头][拳头]我要带着我的正能量和梦想奋斗!我要用爱来拥抱每一天!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-19 08:18:36 | 显示全部楼层
    PAT乙级真题1003. 我要通过!(20)(解题)


    答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
    得到“答案正确”的条件是:
    1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
    2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
    现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。


    输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

    输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

    输入样例
    8
    PAT
    PAAT
    AAPATAA
    AAPAATAAAA
    xPATx
    PT
    Whatever
    APAAATAA

    输出样例
    YES
    YES
    YES
    YES
    NO
    NO
    NO
    NO




    code:

    1. /*********编译环境**vc++ 6.0(32位)*************/
    2. #include<stdio.h>
    3. #include<string.h>
    4. #include<malloc.h>
    5. #define M 101

    6. int main()
    7. {
    8.     int n,i,j;
    9.     int cp=0,ct=0,ca=0,flag=0,ce=0;
    10.     char **s;
    11.     char *p1,*p2;

    12.     scanf("%d",&n);
    13.     s=(char **)malloc( n*sizeof(char *)); //定义第一列
    14.     for(i=0;i<n;i++)
    15.     {
    16.         s[i]=(char *)malloc(M*sizeof(char)); //定义行
    17.         scanf("%s",s[i]);
    18.         strcat(s[i],"\0");
    19.     }
    20.     for(i=0;i<n;i++)
    21.     {
    22.         cp=0;
    23.         ct=0;
    24.         ca=0;
    25.         ce=0;

    26.         for(j=0;s[i][j]!='\0';j++)
    27.         {
    28.             if(s[i][j]=='P')
    29.                 cp++;
    30.             else if(s[i][j]=='T')
    31.                 ct++;
    32.             else if(s[i][j]=='A')
    33.                 ca++;
    34.             else
    35.                 ce=1;
    36.         }

    37.         if(cp==1&&ct==1&&ca!=0&&ce==0)
    38.         {
    39.             p1=strchr(s[i],'P');
    40.             p2=strchr(s[i],'T');
    41.             if((p1-s[i])*(p2-p1-1)==strlen(p2)-1)        
    42.                 flag=1;      
    43.         }
    44.         else
    45.             flag=0;

    46.         if(flag==1)
    47.             printf("YES\n");
    48.         else
    49.             printf("NO\n");

    50.     }
    51.     return 0;
    52. }
    复制代码



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-20 01:05:44 来自手机 | 显示全部楼层
    eason(医生)那些触动人心的经典歌词
    相信大家都不陌生


    1.我多么想和你见一面
    看看你最近改变
    不再去说从前只是寒暄
    对你说一句只是说一句
    好久不见
    ——《好久不见》
    2.闭起双眼我最挂念谁
    眼睛张开身边竟是谁
    ——《人来人往》
    3.说来实在嘲讽,我不太懂偏渴望你懂
    是否幸福轻得太沉重,过度使用不痒不痛
    得不到的永远在骚动被偏爱的都有恃无恐
    ——《红玫瑰》
    4.曾爱惜的总要放手
    难接手的又来等候
    如我爱你你爱的他都要走
    同样犯不着哀求
    ——《我什么都没有》
    5.若无其事原来是最狠的报复
    我才明白时间较分手还残酷
    老朋友了再没资格不满足
    ——《想哭》
    6.为何旧知己
    在最后变不到老友
    来年陌生的
    是昨日最亲的某某
    ——《最佳损友》
    7.我们约会我们再会
    没想到再没有拥抱的机会
    我们伤悲我们流泪
    也只能流落到陌生人的嘴
    ——《你会不会》
    8.我们活在选择的年代
    选择电视该看哪一台
    选择一个人值不值得爱
    选择离不开选择生小孩
    我们很努力活得精彩
    好让看起来活得精彩
    ——《阿怪》
    9.难离难舍想抱紧些
    茫茫人生好像荒野
    如孩儿能伏于爸爸的肩膊
    哪怕遥遥长路多斜
    ——《单车》
    10.一时进一时退保持安全范围
    享受被爱滋味却不让你想入非非
    不能相爱的一对
    亲爱像两兄妹
    ——《兄妹》
    11.每次退后又错过你的世界一点
    我没有办法清醒应付新的对决
    你却轻易让我的心委屈到极限
    ——《心的距离》
    12.爱一个人是不是应该有默契
    我以为你懂得每当我看着你
    愿意在角落唱沙哑的歌
    再大声也都是给你
    请用心听不要说话
    ——《不要说话》
    13.夸张只因我很怕
    似木头似石头的话
    得到注意吗
    其实怕被忘记至放大来演吧
    世上还赞颂沉默吗
    不够爆炸
    ——《浮夸》
    14.我想见的笑脸只有怀念
    不懂怎去再聊天
    似等了一百年忽已明白
    即使再见面
    成熟地表演
    不如不见
    ——《不如不见》
    15.爱上了看见你如何不懂谦卑
    去讲心中理想不会俗气
    也许一生太短陪着你
    情感有若行李仍然沉重待我整理
    ——《岁月如歌》
    16.但我拖著躯壳发现沿途寻找的快乐
    仍系于你肩膊或是其实在等我舍割
    然后断线风筝会直飞天国
    ——《一丝不挂》
    17.那个背包载满记念品和患难
    还有摩擦留下的图案
    千金不换它已熟悉我的汗
    它是我肩膀上的指环
    ——《你的背包》
    18.谁人又相信一世一生这肤浅对白
    我只得千语万言放在你心
    比渴望地老天荒更简单未算罕有
    ——《K歌之王》
    19.这是个残酷的喜剧
    我的人生早留在你那里
    我却还要故作潇洒地
    你的喜贴是我的请贴
    你邀我举杯
    我只能回敬我的崩溃
    ——《婚礼的祝福》
    20.只能说我输了
    也许是你怕了
    我们的回忆没有皱折
    你却用离开烫下句点
    只能说我认了
    你的不安赢得你信任
    我却得到你安慰的淘汰
    ——《淘汰》
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-21 01:17:11 | 显示全部楼层
    傻傻学长分享给你的悦耳铃声-----

    《Sunrise - Catie Mckinney 》

    i got to reach you

    i've gotta see you

    let the light shine down on me

    when the day breaks

    and the sky is changing colors

    into something new i wanna see it with you

    sunrise

    i want to see you again

    promise that you always stay

    sunrise

    with the world is blank new

    i wanna see it with you

    wanna touch you

    wanna make you feel like you are the only one

    in this world for me

    want to hold you

    I wanna make you see

    yesterday was long ago as soon as it'll be

    sunrise

    i want to see you again

    promise that you always stay

    sunrise

    with the world is blank new

    i wanna see it with you

    cause I'm not gonna let you say

    you can see all the sun rising

    in the world like stupid fan

    that's nothing I wanna hold than flying for

    just need you

    sunrise

    sunrise

    i want to see you again

    promise that you always stay

    sunrise

    with the world is blank new

    i wanna see it with you

    sunrise

    i want to see you again

    promise that you always stay

    sunrise

    with the world is blank new

    i wanna see it with you

    sunrise

    i want to see you again

    promise that you always stay
    答应我你永远不会离开
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

     楼主| 发表于 2016-4-21 20:04:22 | 显示全部楼层

    PAT乙级真题1004. 成绩排名 (20)(解题)

    题目:
    读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。


    输入格式:每个测试输入包含1个测试用例,格式为
      第1行:正整数n  第2行:第1个学生的姓名 学号 成绩  第3行:第2个学生的姓名 学号 成绩  ... ... ...  第n+1行:第n个学生的姓名 学号 成绩
    其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

    输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
    输入样例:
    3Joe Math990112 89Mike CS991301 100Mary EE990830 95
    输出样例:
    Mike CS991301Joe Math990112

    我的理解:这道题理解起来还是比较容易,由于PAT的评分机制会严格按照它给定的格式评分,所以这题需要注意的一点是输出的格式;
         在算法的选择上,我这里用的结构体数组,当然用动态链表也是能做,以后找时间加上;

    code:

    1. /******** 编译环境 vc6.0(32位)****************/
    2. /******** PAT评分通过 *******************/
    3. #include<stdio.h>
    4. #include<string.h>
    5. struct MS //声明结构体类型
    6. {
    7. char name[11];
    8. char num[11];
    9. int grade;
    10. };
    11. int main()
    12. {

    13. int n=0;
    14. int i=0;
    15. int min=0,max=0;
    16. int mindex=0;
    17. int maxdex=0;
    18. struct MS *stu;
    19. scanf("%d",&n);
    20. stu=(struct MS *)malloc(n*sizeof(struct MS));
    21. for(i=0;i<n;i++)
    22. {
    23. scanf("%s %s %d",stu[i].name,stu[i].num,&stu[i].grade);
    24. }
    25. min=stu[0].grade;
    26. max=stu[0].grade;
    27. for(i=0;i<n;i++)
    28. {
    29. if(stu[i].grade<min)
    30. {
    31. min=stu[i].grade;
    32. mindex=i;
    33. }
    34. if(stu[i].grade>max)
    35. {
    36. max=stu[i].grade;
    37. maxdex=i;
    38. }
    39. }
    40. printf("%s %s\n",stu[maxdex].name,stu[maxdex].num);
    41. printf("%s %s\n",stu[mindex].name,stu[mindex].num);
    42. return 0;
    43. }
    复制代码

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|空中社区  

    GMT+8, 2017-11-21 04:48 , Processed in 0.171893 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表