牛牛给度度熊出了一个数学题,牛牛给定数字
,希望度度熊能找到一组非负整数
满足
且
尽量小。
度度熊把这个问题交给了你,希望你能帮他解决。
#include<bits/stdc++.h> #include <climits> #include <cstdio> #include<vector> #define N 100005 #define mn INT_MIN #define mx INT_MAX typedef long long ll; using namespace std; int main() { ll n,m,k; scanf("%lld %lld %lld",&n,&m,&k); ll imax=max(n,m); ll r=min(n,m); ll p=r; ll l=1; ll ans=INT_MIN; while(l<=r) { ll mid =(l+r)/2; if (mid*imax<=k) { ans=max(mid,ans); l=mid+1; }else { r=mid-1; } } ans=p-ans; cout<<ans; return 0; }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long n = in.nextLong(), m = in.nextLong(), k = in.nextLong(); // 保证 n <= m if (n > m) { long tmp = n; n = m; m = tmp; } // 答案 System.out.println(n - (k/m)); } }
public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long n = in.nextLong(); long m = in.nextLong(); long k = in.nextLong(); if(n <= m){ System.out.println(helper(n,m,k)); }else{ System.out.println(helper(m,n,k)); } } public static long helper(long n,long m,long k){ long num = k / m; return n - num; } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long n = in.nextLong(); long m = in.nextLong(); long k = in.nextLong(); long a = 0; long b = 0; long min = Integer.MAX_VALUE; for (; a < n; a++) { b = m - k / (n - a); if (b >= 0) { min = a + b < min ? a + b : min; } else { b = 0; min = a + b < min ? a + b : min; break; } } min = a < min ? a : min; System.out.print(min); } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long n = in.nextLong(); long m = in.nextLong(); long k = in.nextLong(); long a = 0, b = 0; while ((n - a) * (m - b) > k) { if (a == n - 1) { b++; } else if (b == m - 1) { a++; } else if ((n - a - 1) * (m - b) < (n - a) * (m - b - 1)) { a++; } else { b++; } } System.out.println(a + b); } }
import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); long n = scan.nextLong(); long m = scan.nextLong(); long k = scan.nextLong(); long count = 0; while (n * m > k) { long sum = n + m; n = Math.min(n, m); m = sum - n; count++; n--; } System.out.println(count); } }
class Solution { public int shuLunText(int n,int m,int k){ int min=Integer.MAX_VALUE; for(int a=0;a<=n;a++){ for(int b=0;b<=m;b++){ int s=a+b; int level=(n-a)*(m-b); if(level<=k){ min=min<s?min:s; } } } return min; } }我也不知道对错就这样吧。
package main import ( "fmt" ) func main() { var n,m,k int fmt.Scanln(&n,&m,&k) if n > m { n,m = m,n } ans := n - k / m fmt.Println(ans) }
import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); long n = sc.nextLong(); long m = sc.nextLong(); long k = sc.nextLong(); if(n > m){ long c = m; m = n; n = c; } System.out.print(n - (k / m)); } }