ACM no.54 no.62

原创 2016年05月30日 23:41:39

no.54
描述

小明的零花钱一直都是自己管理。每个月的月初妈妈给小明300元钱,小明会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让小明学习如何储蓄,妈妈提出,小明可以随时把整百的钱存在她那里,到了年末她会加上20%还给小明。因此小明制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果他预计到这个月的月末手中还会有多于100元或恰好100元,他就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初小明手中还有83元,妈妈给了小明300元。小明预计11月的花销是180元,那么他就会在妈妈那里存200元,自己留下183元。到了11月月末,小明手中会剩下3元钱。
小明发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,小明手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,小明将不得不在这个月省吃俭用,压缩预算。
现在请你根据2010年1月到12月每个月小明的预算,判断会不会出现这种情况。如果不会,计算到2010年年末,妈妈将小明平常存的钱加上20%还给小明之后,小明手中会有多少钱。 

输入
第一行输入一个整数N,表示测试数据的组数(N<=10)
每组测试数据输入12行数据,每行包含一个小于350的非负整数,
分别表示1月到12月小明的预算。

输出
输出-X,X表示出现这种情况的第一个月;否则输出到2010年年末小明手中
会有多少钱(如果是小数,请四舍五入到整数位)。

public class no54 
{
    public int method(int[][] a)
    {

        for(int i=0;i<a.length;i++)
        {
            int lest=0;
            int mum=0;
            boolean charge=true;
            for(int j=0;j<a[i].length;j++)
            {
                lest+=300;
                lest=lest-a[i][j];
                if(lest<0)
                {
                    System.out.println(-(j+1));
                    charge=false;
                    break;
                }
                else if(lest>=100)
                {
                    int bai=lest/100;
                    mum+=bai*100;
                    lest=lest%100;
                }
            }
            if(charge==true)
                System.out.println("余额为"+(lest+(mum*=1.2)));
        }
        return 0;   
    }

    public static void main(String[] args)
    {
        no54 c1 = new no54();
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int[][] a=new int[n][12];
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a[i].length;j++)
            {
                a[i][j]=input.nextInt();
            }
        }
            c1.method(a);


    }
}

no.62
描述

笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 
输入
第一行数据N(0<N<100)表示测试数据组数。
每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。 
输出
每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,
那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
package 练习;

import java.util.Scanner;

public class no62 
{   
    public boolean isSuShu(int m)
    {
        boolean result=true;
        if(m==0 || m==1)
            return !result;
        for(int i=2;i<m;i++)
        {
            if(m%i==0)
            {
                result=false;
                break;
            }
        }
        return result;
    }

    public void method(String[] m)
    {
        for(int j=0;j<m.length;j++)
        {
            int min=1,max=1,sum=0;
            char[] chr=m[j].toCharArray();
            for(int k=0;k<chr.length;k++)
            {
                char c =chr[k];
                int count=0;
                for(int l=0;l<chr.length;l++)
                {
                    if(c==chr[l])
                    {
                        count++;
                        if(count>=max)
                            max=count;
                        if(count<=min)
                            min=count;
                    }
                }
                if(count>sum)
                    sum=count;
            }

            int balance=sum-min;
            if(isSuShu(balance))
                System.out.println("lucky word");
            else
                System.out.println("no answer "+"\n"+0);
        }
    }

    public static void main(String[] args)
    {
        no62 c1=new no62();
        Scanner input = new Scanner(System.in);
        int a=input.nextInt();
        String[] str = new String[a];
        for(int i=0;i<str.length;i++)
        {
            str[i]=input.next();
        }

        c1.method(str);
        input.close();
    }
}
no.24
描述
    现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,
    并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
    如果输入的整数本身就是素数,则输出该素数本身,距离输出0

输入
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。

public class no24 
{
    public boolean isSuShu(int m)
    {
        boolean result=true;
        for(int i=2;i<m;i++)
        {
            if(m%i==0)
            {
                result=false;
                break;
            }
        }
        return result;
    }
    public int getleft(int m)
    {
        int num=m-1;
        boolean res;
        for(;num>0;num--)
        {
            res=isSuShu(num);
            if(res==true)
                return num;
        }
        return 0;
    }
    public int getright(int m)
    {
        boolean resu;
        int num=m+1;
        for(;num>m;num++)
        {
            resu=isSuShu(num);
            if(resu==true)
                return num;
        }
        return 0;

    }

    public static void main(String[] args)
    {
        no24 c1 = new no24();
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int []b=new int[n];
        for(int i=0;i<b.length;i++)
        {
            b[i]=input.nextInt();
        }
        for(int j=0;j<b.length;j++)
        {
            int l,r;
            if(c1.isSuShu(b[j])==true)
            {
                System.out.println(b[j]+" "+0);
                continue;
            }
            l=b[j]-c1.getleft(b[j]);
            r=c1.getright(b[j])-b[j];
            if(l>r)
                System.out.println(c1.getright(b[j])+" "+r);
            else
                System.out.println(c1.getleft(b[j])+" "+l);
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Leetcode NO.62 Unique Paths

本题题目要求如下: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diag...
  • u012290414
  • u012290414
  • 2015年02月17日 04:37
  • 265

Leetcode NO.54 Spiral Matrix

本题题目要求如下: Given a matrix of m x n elements (m rows, n columns), return all elements of the matr...
  • u012290414
  • u012290414
  • 2015年03月04日 02:34
  • 274

NO.62 [env]环境相关参数配置工具类EnvConfig

在NO.12 Web应用数据配置一般策略(DataBase、Properties、XML配置对比)一文中曾经提到过,部分参数配置与环境相关,比如生产环境和测试环境连接的三方平台URL也分为生产用地...
  • amosryan
  • amosryan
  • 2011年05月12日 15:46
  • 1759

ACM必学知识点清单

训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高之后,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练:   第一阶段:练经典常用算法,下面的每...
  • xuanandting
  • xuanandting
  • 2016年08月09日 11:01
  • 2505

每日一题 No.54 最小生成树问题(Kruskal算法)

本题要求:给出一个有向图,让你求出这个图的最小生成树输入格式:第一行输入V,E分别代表顶点数和边数 接下来E行,每行输入from to cost 代表从from到to的距离为cost 输出格式:输...
  • linglian0522
  • linglian0522
  • 2017年05月28日 13:21
  • 244

ACM新手入门扫盲

本帖是给本校大一生写的,致力于给有志于搞ACM-ICPC的同学一个自学成才的机会,是基本的入门扫盲帖子。诣在给出一个大局观,给出一个可以努力的方向。...
  • xc19952007
  • xc19952007
  • 2016年01月23日 18:18
  • 2859

ACM经典算法之字符串处理

转自:http://blog.sina.com.cn/s/blog_93d2ceba010145c6.html 一、(字符串替换) 语法:replace...
  • Enjoying_Science
  • Enjoying_Science
  • 2015年08月18日 21:54
  • 1280

ACM 容斥原理

VJ 点击打开链接 参考 点击打开链接  非常好的译文:点击打开链接 容斥原理的想法就是求多个集合的并集.所以要先设计好集合. 组合数学问题中,正面解决会困难,常用方法是正难则反,使用容斥原理求反向...
  • gg_gogoing
  • gg_gogoing
  • 2015年02月08日 08:57
  • 3673

ACM学习经验

首先可以说,在我认识的顶尖的 ACMer 中,很多人走的都不是在 OJ 盲目刷题的路。(当然也有特例,前提是他们的某方面基础或智商本身已经达到很高的水平。)不盲目刷题,我想原因也很简单,OJ 题目质量...
  • ccMaa
  • ccMaa
  • 2016年03月25日 00:58
  • 772

ACM入门之新手入门

第一章 新手入门1.ACM国际大学生程序设计竞赛简介1)背景与历史1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕。1977年,该项竞赛被分为两个级别:区...
  • hncqp
  • hncqp
  • 2007年07月20日 09:45
  • 11970
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACM no.54 no.62
举报原因:
原因补充:

(最多只允许输入30个字)