From 4022e5c95210631e4aceb08eaf9d9071aa5aefc4 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Tue, 15 Sep 2026 08:16:43 +0800 Subject: Set up a git repo --- tests/sysy_lvX/digui3.sy | 91 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tests/sysy_lvX/digui3.sy (limited to 'tests/sysy_lvX/digui3.sy') diff --git a/tests/sysy_lvX/digui3.sy b/tests/sysy_lvX/digui3.sy new file mode 100644 index 0000000..bdac931 --- /dev/null +++ b/tests/sysy_lvX/digui3.sy @@ -0,0 +1,91 @@ +int n; +int k; +int cnt; +int a[60]; + +void solve1(int p,int sum,int last) +{ + int i; + if(sum==n){ + if(p==k){ + cnt = cnt+1; + } + return; + } + if(sum>n){ + return; + } + i=last; + while(i>=1){ + a[p]=i; + sum=sum+i; + solve1(p+1,sum,i); + sum=sum-i; + i=i-1; + } +} + +void solve2(int p,int sum,int last) +{ + int i; + if(sum==n){ + cnt = cnt+1; + return; + } + if(sum>n){ + return; + } + i=last; + while(i>=1){ + a[p]=i; + sum=sum+i; + solve2(p+1,sum,i-1); + sum=sum-i; + i=i-1; + } +} + +void solve3(int p,int sum,int last) +{ + int i; + if(sum==n){ + cnt = cnt+1; + return; + } + if(sum>n){ + return; + } + i=last; + while(i>=1){ + a[p]=i; + sum=sum+i; + solve3(p+1,sum,i); + sum=sum-i; + i=i-2; + } +} + +int main() +{ + n = getint(); + k = getint(); + cnt=0; + solve1(0,0,n); + putint(cnt); + putch(10); + cnt=0; + solve2(0,0,n); + putint(cnt); + putch(10); + cnt=0; + if(n%2==0) { + solve3(0,0,n-1); + } + else { + solve3(0,0,n); + } + putint(cnt); + putch(10); + + return 0; +} -- cgit v1.2.3