度小满第一题,请大佬帮我看下哪儿有错

第一题:提示Runtime Error
题目是:
如果一个数n,能整除自身包含的每个数,则输出“G”,有能被整除的,输出“H”,没有能被整除的,输出“S"。
n<=10^12
例如:72  能整除 2 ,---->H
12能整除1,2 ,---->G
37不能整除 3,7 --->S

package com.my.test;

import java.util.Scanner;

public class DXM001 {  public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int T=sc.nextInt();
        sc.nextLine();
        String[] s=new String[T];
        for(int i=0;i<T;i++) {  long k=sc.nextLong();  sc.nextLine();  s[i]=get(k);
        }
        for(int i=0;i<T;i++) {  System.out.println(s[i]);
        }
        sc.close();  }  private static String get(long k) {  String str=k+"";  int t=0;  for(int i=0;i<str.length();i++) {  int l=str.charAt(i)-'0';  if(l==0) {  continue;  }  if(k%l==0) {  t++;  }  }  String s=null;  if(t==0) {  s="S";  }else if(t==str.length()) {  s="G";  }else {  s="H";  }  //String s=(t==0)?"S":t==str.length()?"G":"H";  return s;  }
}
	
运行提示RuntimeError


#度小满##笔试题目#
全部评论
package com.my.test; import java.util.Scanner; public class DXM001 {     public static void main(String[] args){         Scanner sc = new Scanner(System.in);         int T=sc.nextInt();         sc.nextLine();         String[] s=new String[T];         for(int i=0;i<T;i++) {             long k=sc.nextLong();             sc.nextLine();             s[i]=get(k);         }         for(int i=0;i<T;i++) {             System.out.println(s[i]);         }         sc.close();     }     private static String get(long k) {         String str=k+"";         int t=0;         for(int i=0;i<str.length();i++) {             int l=str.charAt(i)-'0';             if(l==0) {                 continue;             }             if(k%l==0) {                 t++;             }         }         String s=null;         if(t==0) {             s="S";         }else if(t==str.length()) {             s="G";         }else {             s="H";         }         //String s=(t==0)?"S":t==str.length()?"G":"H";         return s;     } }
点赞 回复 分享
发布于 2019-04-28 22:09
过了多少
点赞 回复 分享
发布于 2019-04-28 22:14
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class NumberMood {     public static void main(String[] args) {         // TODO Auto-generated method stub       Scanner  sc = new Scanner(System.in);       int n =  sc.nextInt();       int []arr = new int[n];       for(int i=0;i<n;i++)       {           arr[i] = sc.nextInt();       }       for(int i=0;i<n;i++)       {           System.out.println(ReturnMood(arr[i]));       }     }     public static String ReturnMood(int n)     {                  String str = String.valueOf(n);         int all =0;         int not = 0;         for(int i =0 ;i<str.length();i++)         {             int a = Integer.parseInt(str.substring(i,i+1));             if(n%a==0)             {                 all++;             }             if(n%a!=0)             {                 not++;             }                      }         if(all==str.length())         {             return "G";         }          if(not==str.length())         {             return "S";         }         return "H";     } } 大家帮忙看下我这个思路对不呀
点赞 回复 分享
发布于 2019-04-28 22:15
只有通过了55% ,求解 #include<iostream> #include<string> #include<vector> #include<stdio.h> #include<string.h> #include<map> #include<algorithm> #include<queue> #include<fstream> using namespace std; int n; string num; int nums[20]; int vis[11]; int BigNumMod(int BigNum[], int c, int length) { int ans = 0; for (int i = 0; i < length; i++) ans = ((ans * 10) + BigNum[i]) % c; return ans; } int main() { scanf("%d", &n); int len, cnt, c; while (n--) { cin >> num; cnt = 0; len = num.length(); memset(vis, -1, sizeof(vis)); vis[0] = 1; for (int i = 0; i < len; i++)nums[i] = num[i] - '0'; for (int i = 0; i < len; i++) { c = num[i] - '0'; if (vis[c] == 1)cnt++; else if (vis[c] == -1 && BigNumMod(nums, c, len) == 0) { vis[c] = 1; cnt++; } else { vis[c] = 0; } } printf("%s", len == cnt ? "G" : cnt == 0 ? "S" : "H"); if (n != 0)printf("\n"); } return 0; }
点赞 回复 分享
发布于 2019-04-28 22:19

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务