Using cron for multiple queries

It sounds like what you really might want is a transient. WP Transients are a way to cache the results of a query, and set an expiration date on that cache.

So you could cache the results of your example from above for 24 hours. If anyone requests that data while the cache is still valid, it just returns the results without recalculating.

If someone requests the data after your cache period has expired, you do the calculation again and cache the result for another 24 hours.

Example:

if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {

    // It wasn't there, so regenerate the data and save the transient

    $a = the_field('test1');
    $b = the_field('test2');
    $c = the_field('test3');
    $d = the_field('test4');

    $special_query_results = $a * $b * $c * $d;

    set_transient( 'special_query_results', $special_query_results, 24 * HOUR_IN_SECONDS );
}

// Use $special_query_results as needed from here

More info about WordPress Transients

UPDATE

Based on your further information, you may actually need a CRON, here is an example:

if ( ! wp_next_scheduled( 'update_acf' ) ) {
    wp_schedule_event( time(), 'daily', 'update_acf' );
}

add_action( 'update_acf', 'update_my_acf_field' );

function update_my_acf_field() {
    // This is where you will do the logic that needs to be performed on a daily CRON
}