def main(): import sys input = sys.stdin.read data = input().split() s = data[0] k = int(data[1]) count = 0 n = len(s) for i in range(n): if s[i] == '0': continue # 跳过以 0 开头的子串 num = 0 for j in range(i, n): num = num * 10 + int(s[j]) if num >= k: break count += 1 print(count) if __name__ == "__main__": main()
#include <iostream> #include <string> using namespace std; int main() { string s; long long k; cin >> s >> k; int n = s.size(); int count = 0; for (int i = 0; i < n; ++i) { long long num = 0; for (int j = i; j < n; ++j) { //num = num * 10 + (s[j] - '0'); string sub = s.substr(i,j-i+1); long long num =stoll(sub); if (num < k) { ++count; } else { break; } } } cout << count << endl; return 0; }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 数字串 String str = in.next(); // k字符串 String kStr = in.next(); // 数字串的长度 int length = str.length(); // k的长度 int kLength = kStr.length(); // 得到正整数K long k = Long.parseLong(kStr); // 方法数 int count = 0; // 遍历数字串 for (int i = 0; i < length; i++) { long sum = 0; for (int j = i; j < length; j++) { // 将当前子串所表示的数值sum乘以10,再加上当前字符对应的数字 // str.charAt(j) - '0' 是将字符转换为对应的数字,例如字符 '1' 转换为数字 1 sum = sum * 10 + (str.charAt(j) - '0'); // 判断当前子串所表示的数值sum是否小于k,并且子串的长度(j - i + 1)是否小于等于k的长度 if (sum < k && (j - i + 1) <= kLength) { count++; } else { break; } } } System.out.println(count); } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long count=0; String str = in.next(); long k = in.nextLong(); int n = str.length(); int m=String.valueOf(k).length(); for(int i=0; i<n; i++){ long charSum=0; // charSum = str.charAt(i)-'0'; for(int j=i; j<n; j++){ charSum = charSum*10+(str.charAt(j)-'0'); if((charSum<k) && ((j-i+1)<=m)){ count++; }else{break;} } } System.out.println(count); } }
charlist = input() k = input().strip() result = 0 for i in range(len(k)): for start in range(len(charlist) - i): end = start + i if i == 0: value = int(charlist[start]) else: value = int(charlist[start:end+1]) if value < int(k): result += 1 print(result)
private static int nums(String str, long k) { String kStr = k + ""; int left =0; int cnt = 0; for(int right = 0;right < str.length();right++){ while(left <= right && comp(str,left, right, kStr) >= 0 ){ left++; } cnt = cnt + right - left + 1; } return cnt; } private static int comp(String str, int left, int right, String kStr) { int len = right - left + 1; if (len > kStr.length()) { return 1; } if(len < kStr.length()) return -1; for (int i = 0; i < len; i++) { int leftNum = str.charAt(left + i) - '0'; int rightNum = kStr.charAt(i) - '0'; if (leftNum > rightNum) { return 1; } else if (leftNum < rightNum) { return -1; } } return 0; }
def get_sub_minor(num_list, k): sub = [] count = 0 sub_length_max = k # 截取的子串的len肯定要小于等于k的len for ind in range(len(num_list)): for jnd in [ind + 1, ind + sub_length_max]: sub.append(num_list[ind:jnd]) for element in sub: if int(element) < k: count += 1 print(count) # get_sub_minor(num_list='1234', k=23)
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); int k = sc.nextInt(); int left = 0; int right = 0; int res = 0; while (right < s.length()) { while (Long.parseLong(s.substring(left, right + 1)) >= k) { if (left == right) { right++; } left++; } while (right < s.length() && Long.parseLong(s.substring(left, right + 1)) < k) { int curLength = right - left + 1; res += curLength; right++; } } System.out.println(res); } }