今天bigsai
陪伴我刷题,我很高兴在他的帮助下过了8道题。虽然这些题都是很基础的题,但是由于自己基础很薄弱,虽然投入了很多时间,但是觉得很值得,也想在他的陪伴下继续坚持和努力下去!
bigpian
加油!
题目链接
题目描述:
分析:
初次拿到这个题,完全没有思路,不知道它让我干嘛,觉得很复杂。后来bigsai让我读题十遍,给我分析了一下题目要求,把一个题目拆分成三小部分的小题,分别是:
如果
boolean为true,说明为好学生总数加1.否则不进行操作。
附上ac代码为:
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()){
int n = scan.nextInt();//学生数
int m = scan.nextInt();//科目数
double[][] grade = new double[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
grade[i][j] = scan.nextDouble();
}
}//
for(int i=0;i<n;i++){
double sum = 0.00f,ava = 0.00f;
for(int j=0;j<m;j++){
sum += grade[i][j];
}
ava = sum/m;
if(i==n-1){
System.out.println(String.format("%.2f",ava));
}else System.out.print(String.format("%.2f",ava)+" ");
}
double ave []=new double[m];//各科平均分
for(int j=0;j<m;j++){
double sum1=0.00,ava1=0.00;
for(int i=0;i<n;i++){
sum1 +=grade[i][j];
}
ava1 = sum1/n;
ave[j]=ava1;
if(j==m-1) {
System.out.println(String.format("%.2f",ava1));
}else System.out.print(String.format("%.2f",ava1)+" ");
}
int count=0;//不挂科的学生总数
for(int i=0;i<n;i++){
boolean jud=true;//假设不挂科
//对每个学生进行判断
for(int j=0;j<m;j++) {
if(grade[i][j]<ave[j])
{
jud=false;break;
}
else {}
}
if(jud)count++;
}
System.out.println(count);
System.out.println();
}
}
}
hdu2027统计元音
题目链接
题目描述:
分析:
首先我们知道元音字母为a,e,i,o,u。输入一个字符串,首先先对字符串按照编号遍历,如果字符串里面有对应的元音字符就在相应的判断语句里面进行加一。最后输出遍历结果,我在写这道题的时候又犯了一个错误,输出结果最后一例是没有空行的
,我没有意识到 ,这个时候bigsai提醒了我,最后运行成功。
附上ac代码为:
import java.util.Scanner;
public class aeiou {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
for(int i=0;i<n;i++){
int num1=0,num2=0,num3=0,num4=0,num5=0;
String tmp = scan.nextLine();
for(int j=0;j<tmp.length();j++){
char ch = tmp.charAt(j);
if (ch=='a'){
num1++;
}else if(ch=='e'){
num2++;
}else if(ch=='i'){
num3++;
}else if(ch=='o'){
num4++;
}else if(ch=='u'){
num5++;
}
}
System.out.println("a:"+num1);
System.out.println("e:"+num2);
System.out.println("i:"+num3);
System.out.println("o:"+num4);
System.out.println("u:"+num5);
if(i!=n-1){
System.out.println();}
}
}
}
hud2044一只小蜜蜂…
题目链接
题目描述:
分析:
这道题是bigsai敲的,我跟着他的思路走,以下是我的见解:他说可以用斐波那契思路来做,我说也可以从前往后推,他采纳了。所以他采用等效替代的方法来推导,本来开始用int类型,但是始终过不了,他说数值越界
了,改成了long就成功了。
ac代码:
import java.util.Scanner;
public class hdu2044一只小蜜蜂 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
for(int i = 0;i<N;i++){
int a = scan.nextInt();
int b = scan.nextInt();
long p[]=new long[55];
p[a]=0;p[a+1]=1;p[a+2]=2;
for(int j=a+3;j<=b;j++)
{
p[j]=p[j-1]+p[j-2];
}
long value=p[b]-p[a];
System.out.println(value);
}
}
}
hud2029Palindromes _easy version
题目链接
题目描述:
分析:
首先我们要想到的是”回文串“是啥,知道了它的规律后,就应该知道应该拿前面的字符和后面的字符比较,前面的字符长度应该为二分之一
。此时采用Boolean类型来做,如果在比较的过程中,有一个false或者多个false,则输出NO。
ac代码:
import java.util.Scanner;
public class Huiwenchuan {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
for(int i=0;i<n;i++){
String tmp = scan.nextLine();
char ch1[]=tmp.toCharArray();
boolean ishuiwen=true;
for(int j=0;j<tmp.length()/2;j++) {
if(ch1[j]==ch1[tmp.length()-j-1]){
//不操作
}else
{
ishuiwen=false;
break;
}
}
if(ishuiwen)System.out.println("yes");
else System.out.println("no");
}
}
}
hud2043密码
题目链接
题目描述:
分析:
首先输入一个密码,判断它的字符大小是否满足8到16这个范围,然后再筛选字符里面是否包含3个或3个以上的字符类别。
ac代码:
import java.util.Scanner;
public class Password {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int M = scan.nextInt();
scan.nextLine();
for (int i = 0; i < M; i++) {
int a = 0, b = 0, c = 0, d = 0,e=0;
String str = scan.nextLine();
if (str.length() = 8) {
char[] ch = str.toCharArray();
for (int j = 0; j < str.length(); j++) {
if (ch[j] = 'A') {
a = 1;
} else if (ch[j] = 'a') {
b = 1;
} else if (ch[j] >= '0' && ch[j] = 3) {
System.out.println("YES");
}else System.out.println("NO");
}
}
}
hud2040亲和数
题目链接
题目描述:
分析:
真约数是除了1和它本身,还有其他的公约数,称为真约数。题目要求给出两个数,如果一个数的公约数之和(不包括其本身)等于另一个数,则互相为亲和数。
ac代码:
import java.util.Scanner;
public class Qinyueshu {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int M = scan.nextInt();
for(int i =0;i<M;i++){
int sum1 = 0,sum2 = 0;
int a = scan.nextInt();
int b = scan.nextInt();
for(int j = 1;j<a;j++){
if(a%j==0){
sum1 += j;
}
}
for(int k = 1;k<b;k++){
if(b%k==0){
sum2 += k;
}
}
if(sum1==b && sum2==a){
System.out.println("YES");
}else System.out.println("NO");
}
}
}
hud2021发工资咯
题目链接
题目描述:
分析:
假如一个老师的工资是299元,则先除以100为2,然后再与100相余则剩99,再除以50为1,一次类推,可得到在这6张面值的张数。
ac代码:
package ex2;
import java.util.Scanner;
//100 50 10 5 2 1 //step 判断多少个100 299 299/100=2 2个100 num=num%100
// 99/50=1 99%50=49 49/10=4 9 9/5=1 4 4/2=2 0 1/0;
public class Salary {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int n = scan.nextInt();
scan.nextLine();
if(n==0){
break;
}
int[] salary = new int[n];
for (int i = 0; i < n; i++) {
salary[i] = scan.nextInt();
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += salary[i] / 100 + salary[i] % 100 / 50 + salary[i] % 100 % 50 / 10 + salary[i] % 100 % 50 % 10 / 5 + salary[i] % 100 % 50 % 10 % 5 / 2 + salary[i] % 100 % 50 % 10 % 5 % 2 / 1;
}
System.out.println(sum);
}
}
}
hud2032杨辉三角
题目链接
题目描述:
分析:
先找出杨辉三角的规律,在横竖坐标相等的时候为1,在横坐标为0的时候也为1。到了第二行,数的值=上方数值+左上方数值。输出的时候做判断,如果行列坐标相等则直接输出,否则输出+空格。注意:最后要空行。
ac代码:
import java.util.Scanner;
public class Yanghui {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()){
int n = scan.nextInt();
int[][] a = new int[n][n];
for(int i = 0;i<n;i++){
a[i][0] = 1;
a[i][i] = 1;
}
for(int i = 1;i<n;i++){
for(int j=1;j<n-1;j++){
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(int i = 0;i<n;i++){
for(int j=0;j<=i;j++){
if(j==i){
System.out.print(a[i][j]);
}else System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println();
}
}
}